summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 00:02:07 +0000
committerlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 00:02:07 +0000
commit99b96f34f59e23b1d298d096a6e87119609f93a8 (patch)
tree9f6e8a77a6f900db3e29f82855ad192c2effe1b2 /content
parenta07fb6d62e5762df82304256e0fc712c10a55498 (diff)
downloadchromium_src-99b96f34f59e23b1d298d096a6e87119609f93a8.zip
chromium_src-99b96f34f59e23b1d298d096a6e87119609f93a8.tar.gz
chromium_src-99b96f34f59e23b1d298d096a6e87119609f93a8.tar.bz2
Browser plugin: fix win aura tear down crash, skip calling
ChildWindow->UpdateConstrainedWindow() from WCVAura after the web_contents_ has been destroyed. BUG=178169,177222 TEST=Added test for teardown, enabled couple of tests back in WebViewTest and BrowserPluginHostTest. Review URL: https://chromiumcodereview.appspot.com/12334075 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184781 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/browser_plugin/browser_plugin_host_browsertest.cc21
-rw-r--r--content/browser/web_contents/web_contents_view_aura.cc17
2 files changed, 17 insertions, 21 deletions
diff --git a/content/browser/browser_plugin/browser_plugin_host_browsertest.cc b/content/browser/browser_plugin/browser_plugin_host_browsertest.cc
index b781d52..5b2f2cb 100644
--- a/content/browser/browser_plugin/browser_plugin_host_browsertest.cc
+++ b/content/browser/browser_plugin/browser_plugin_host_browsertest.cc
@@ -488,17 +488,8 @@ IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderChangedAfterSwap) {
EmbedderChangedAfterSwapTestHelper();
}
-// TODO(lazyboy): Make this test pass on win aura trybots:
-// http://crbug.com/177222.
-#if defined(OS_WIN) && defined(USE_AURA)
-#define MAYBE_EmbedderChangedAfterSwap_UseGuestViews \
- DISABLED_EmbedderChangedAfterSwap_UseGuestViews
-#else
-#define MAYBE_EmbedderChangedAfterSwap_UseGuestViews \
- EmbedderChangedAfterSwap_UseGuestViews
-#endif
IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest,
- MAYBE_EmbedderChangedAfterSwap_UseGuestViews) {
+ EmbedderChangedAfterSwap_UseGuestViews) {
// kEnableBrowserPluginGuestViews is turned on for this test.
EmbedderChangedAfterSwapTestHelper();
}
@@ -738,15 +729,7 @@ IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadEmbedder) {
ReloadEmbedderTestHelper();
}
-// TODO(lazyboy): Make this test pass on win aura trybots:
-// http://crbug.com/177222.
-#if defined(OS_WIN) && defined(USE_AURA)
-#define MAYBE_ReloadEmbedder_UseGuestViews DISABLED_ReloadEmbedder_UseGuestViews
-#else
-#define MAYBE_ReloadEmbedder_UseGuestViews ReloadEmbedder_UseGuestViews
-#endif
-IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest,
- MAYBE_ReloadEmbedder_UseGuestViews) {
+IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadEmbedder_UseGuestViews) {
// kEnableBrowserPluginGuestViews is turned on for this test.
ReloadEmbedderTestHelper();
}
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index 228d6c6..8038678 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -24,6 +24,7 @@
#include "content/public/browser/render_widget_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents_delegate.h"
+#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_view_delegate.h"
#include "content/public/browser/web_drag_dest_delegate.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
@@ -778,10 +779,13 @@ class WebContentsViewAura::WindowObserver
// Constrained windows are added as children of the WebContent's view which may
// overlap with windowed NPAPI plugins. In that case, tell the RWHV so that it
// can update the plugins' cutout rects accordingly.
-class WebContentsViewAura::ChildWindowObserver : public aura::WindowObserver {
+class WebContentsViewAura::ChildWindowObserver : public aura::WindowObserver,
+ public WebContentsObserver {
public:
explicit ChildWindowObserver(WebContentsViewAura* view)
- : view_(view) {
+ : WebContentsObserver(view->web_contents_),
+ view_(view),
+ web_contents_destroyed_(false) {
view_->window_->AddObserver(this);
}
@@ -822,11 +826,19 @@ class WebContentsViewAura::ChildWindowObserver : public aura::WindowObserver {
}
}
+ // Overridden from WebContentsObserver:
+ virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE {
+ web_contents_destroyed_ = true;
+ }
+
private:
void UpdateConstrainedWindows(aura::Window* exclude) {
if (RenderViewHostFactory::has_factory())
return; // Can't cast to RenderWidgetHostViewAura in unit tests.
+ if (web_contents_destroyed_)
+ return;
+
RenderWidgetHostViewAura* view = static_cast<RenderWidgetHostViewAura*>(
view_->web_contents_->GetRenderWidgetHostView());
if (!view)
@@ -843,6 +855,7 @@ class WebContentsViewAura::ChildWindowObserver : public aura::WindowObserver {
}
WebContentsViewAura* view_;
+ bool web_contents_destroyed_;
DISALLOW_COPY_AND_ASSIGN(ChildWindowObserver);
};