With the content split, we've split various types (WebContents vs TabContents, BrowserContext vs Profile).
In some cases this has created some additional API overhead, e.g. in Browser, where we have stuff like this:
TabContents* GetActiveTabContents() const;
content::WebContents* GetActiveWebContents() const;
TabContents* GetTabContentsAt(int index) const;
content::WebContents* GetWebContentsAt(int index) const;
My proposal is that we always prefer the content:: types, except where we need to obtain the underlying wrapper to pull something off it.
So in this case, Browser would only present content::WebContents*, and someone that wanted to access a helper would have to do TabContents::FromWebContent(wc)->foo_helper()->Bar();
This keeps the API/code nice and simple, and makes it easier to pull stuff out of src/chrome into components as needed.
Beyond WebContents, I'd also like to see this happen for Profile. The ProfileKeyedService refactor has helped a great deal, but we're reaching a point where I think we could potentially take one step further and just use content::BrowserContext* in most places, only grabbing the profile where absolutely necessary.
WDYT?
-Ben