Fix a crash when an extension bg page calls alert(). Add regression tests this
time.
BUG=37567
Review URL: http://codereview.chromium.org/1602005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43530 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_apitest_misc.cc b/chrome/browser/extensions/extension_apitest_misc.cc
new file mode 100644
index 0000000..11b91af
--- /dev/null
+++ b/chrome/browser/extensions/extension_apitest_misc.cc
@@ -0,0 +1,27 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/app_modal_dialog.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/extensions/extension_apitest.h"
+#include "chrome/browser/extensions/extension_host.h"
+#include "chrome/browser/extensions/extension_process_manager.h"
+#include "chrome/browser/renderer_host/render_view_host.h"
+#include "chrome/browser/profile.h"
+#include "chrome/test/ui_test_utils.h"
+
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, AlertCrash) {
+ ASSERT_TRUE(RunExtensionTest("alert")) << message_;
+
+ Extension* extension = GetSingleLoadedExtension();
+ ExtensionHost* host = browser()->profile()->GetExtensionProcessManager()->
+ GetBackgroundHostForExtension(extension);
+ ASSERT_TRUE(host);
+ host->render_view_host()->ExecuteJavascriptInWebFrame(L"",
+ L"alert('This should not crash.');");
+
+ AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog();
+ ASSERT_TRUE(alert);
+ alert->CloseModalDialog();
+}