diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-22 18:15:34 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-22 18:15:34 +0000 |
commit | 5951b5c1c74422be6793df444364f2f5436685ff (patch) | |
tree | cb424f37692a95576cd314cb8bc9dc8e6b844c88 /chrome/browser/external_tab_container.h | |
parent | 750d1df01bae3a105313008e649d6a8e756bc316 (diff) | |
download | chromium_src-5951b5c1c74422be6793df444364f2f5436685ff.zip chromium_src-5951b5c1c74422be6793df444364f2f5436685ff.tar.gz chromium_src-5951b5c1c74422be6793df444364f2f5436685ff.tar.bz2 |
Initial HTTP requests issued by ChromeFrame popups could bypass the host network stack. The host network
stack in ChromeFrame intercepts HTTP requests based on registered render views. When a popup window is created
we register it in the AddNewContents notification on the TabContentsDelegate. This is a little late as network
requests could be issued before the view actually becomes visible.
To fix this we now have a new method in the TabContentsDelegate interface called TabContentsCreated which
notifies the delegate about the creation of a new TabContents. The ExternalTabContainer implements this
method and registers the render view as pending. I also changed the signature of the
RenderViewHostDelegateViewHelper::CreateNewWindow method to return the new TabContents.
As part of this fix we also unregister the render view when the ExternalTabContainer is deleted. The
container registers for the NotificationType::RENDER_VIEW_HOST_DELETED notification. However we end up
deleting the TabContents in WM_DESTROY, which results in the container never receiving this notification.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=36323
Bug=36323
Test=Will be covered by the automation proxy test which Stoyan is adding
Review URL: http://codereview.chromium.org/652009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39611 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/external_tab_container.h')
-rw-r--r-- | chrome/browser/external_tab_container.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/chrome/browser/external_tab_container.h b/chrome/browser/external_tab_container.h index 154d258..d3d8625 100644 --- a/chrome/browser/external_tab_container.h +++ b/chrome/browser/external_tab_container.h @@ -196,6 +196,8 @@ class ExternalTabContainer : public TabContentsDelegate, // InfoBarContainer::Delegate overrides virtual void InfoBarSizeChanged(bool is_animating); + virtual void TabContentsCreated(TabContents* new_contents); + protected: // Overridden from views::WidgetWin: virtual LRESULT OnCreate(LPCREATESTRUCT create_struct); |