I just moved the remaining methods from WebContents to TabContents. I
kept the methods and data members the same, just merged the classes,
so it should be easy to find what you're looking for (or to resolve
conflicts if you have local changes to web_contents.cc). Hopefully
this will make the complexity in this area much more manageable.

We still have a shell class called WebContents (derived from
TabContents) and references to it, which are temporary so I don't have
to immediately change all references to it. It will hopefully soon go
away.


FAQ: Why did we do this?

Chromium 1 used a variety of specialized tab contents types which we
wrote native interfaces for. This included the history and downloads
page. TabContents was the base class providing shared functionality
and an external API, and there were a variety of subclasses for the
different tab types. WebContents was the TabContents specialization
for web pages.

There were several problems with this. The original idea is that our
native UI would be more awesome than a web page could ever be. But it
turned out to be teh suck because a variety of things didn't work
(find in page, printing, selection) and because we didn't end up doing
anything fancy in there anyway. With native UI, we would have to write
it again for every platform, which nobody was excited about doing.
There were also very difficult bugs associated with switching tab
contents types. For example, in Chromium 1, if you go to the history
page, navigate to a regular web page, go back, then navigate to a
different regular web page, you would see a flash of the first web
page during the second transition. This was the tab contents types
being switched between a HistoryContents and a previously-used
WebContents.

So now we only display web pages inside tabs. This makes the switching
problem go away. Glen rewrote history and downloads we be special web
pages with additional permissions, and I did a whole heckuva lof of
refactoring to delete all the old TabContents switching. We still swap
RenderViewHosts inside the TabContents when we need to switch
processes.

Brett

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to