| Index: content/browser/debugger/devtools_sanity_unittest.cc
|
| diff --git a/content/browser/debugger/devtools_sanity_unittest.cc b/content/browser/debugger/devtools_sanity_unittest.cc
|
| index fb7f6915526e0543d8aef448c2204ff2a2b74044..2ec4c19f9d08d0c213137eacfca940b4e412dee6 100644
|
| --- a/content/browser/debugger/devtools_sanity_unittest.cc
|
| +++ b/content/browser/debugger/devtools_sanity_unittest.cc
|
| @@ -2,16 +2,15 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "content/browser/debugger/devtools_sanity_unittest.h"
|
| +
|
| #include "base/command_line.h"
|
| #include "base/path_service.h"
|
| #include "base/stringprintf.h"
|
| #include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/extensions/extension_host.h"
|
| -#include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/common/chrome_paths.h"
|
| -#include "chrome/test/in_process_browser_test.h"
|
| #include "chrome/test/ui_test_utils.h"
|
| #include "content/browser/debugger/devtools_client_host.h"
|
| #include "content/browser/debugger/devtools_manager.h"
|
| @@ -19,7 +18,6 @@
|
| #include "content/browser/renderer_host/render_view_host.h"
|
| #include "content/browser/tab_contents/tab_contents.h"
|
| #include "content/common/notification_registrar.h"
|
| -#include "content/common/notification_service.h"
|
| #include "net/test/test_server.h"
|
|
|
| namespace {
|
| @@ -53,195 +51,84 @@ const char kPauseWhenLoadingDevTools[] =
|
| "files/devtools/pause_when_loading_devtools.html";
|
| const char kPauseWhenScriptIsRunning[] =
|
| "files/devtools/pause_when_script_is_running.html";
|
| -const char kPageWithContentScript[] =
|
| - "files/devtools/page_with_content_script.html";
|
| const char kChunkedTestPage[] = "chunked";
|
| const char kSlowTestPage[] =
|
| "chunked?waitBeforeHeaders=100&waitBetweenChunks=100&chunksNumber=2";
|
|
|
| +} // namespace
|
|
|
| -class DevToolsSanityTest : public InProcessBrowserTest {
|
| - public:
|
| - DevToolsSanityTest() {
|
| - set_show_window(true);
|
| - EnableDOMAutomation();
|
| - }
|
| +DevToolsSanityTest::DevToolsSanityTest() {
|
| + set_show_window(true);
|
| + EnableDOMAutomation();
|
| +}
|
| +
|
| +void DevToolsSanityTest::RunTest(const std::string& test_name,
|
| + const std::string& test_page) {
|
| + OpenDevToolsWindow(test_page);
|
| + std::string result;
|
|
|
| - protected:
|
| - void RunTest(const std::string& test_name, const std::string& test_page) {
|
| - OpenDevToolsWindow(test_page);
|
| - std::string result;
|
| + // At first check that JavaScript part of the front-end is loaded by
|
| + // checking that global variable uiTests exists(it's created after all js
|
| + // files have been loaded) and has runTest method.
|
| + ASSERT_TRUE(
|
| + ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| + client_contents_->render_view_host(),
|
| + L"",
|
| + L"window.domAutomationController.send("
|
| + L"'' + (window.uiTests && (typeof uiTests.runTest)));",
|
| + &result));
|
|
|
| - // At first check that JavaScript part of the front-end is loaded by
|
| - // checking that global variable uiTests exists(it's created after all js
|
| - // files have been loaded) and has runTest method.
|
| + if (result == "function") {
|
| ASSERT_TRUE(
|
| ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| client_contents_->render_view_host(),
|
| L"",
|
| - L"window.domAutomationController.send("
|
| - L"'' + (window.uiTests && (typeof uiTests.runTest)));",
|
| + UTF8ToWide(base::StringPrintf("uiTests.runTest('%s')",
|
| + test_name.c_str())),
|
| &result));
|
| -
|
| - if (result == "function") {
|
| - ASSERT_TRUE(
|
| - ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| - client_contents_->render_view_host(),
|
| - L"",
|
| - UTF8ToWide(base::StringPrintf("uiTests.runTest('%s')",
|
| - test_name.c_str())),
|
| - &result));
|
| - EXPECT_EQ("[OK]", result);
|
| - } else {
|
| - FAIL() << "DevTools front-end is broken.";
|
| - }
|
| - CloseDevToolsWindow();
|
| - }
|
| -
|
| - void OpenDevToolsWindow(const std::string& test_page) {
|
| - ASSERT_TRUE(test_server()->Start());
|
| - GURL url = test_server()->GetURL(test_page);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - inspected_rvh_ = GetInspectedTab()->render_view_host();
|
| - window_ = DevToolsWindow::OpenDevToolsWindow(inspected_rvh_);
|
| - RenderViewHost* client_rvh = window_->GetRenderViewHost();
|
| - client_contents_ = client_rvh->delegate()->GetAsTabContents();
|
| - ui_test_utils::WaitForNavigation(&client_contents_->controller());
|
| - }
|
| -
|
| - TabContents* GetInspectedTab() {
|
| - return browser()->GetTabContentsAt(0);
|
| - }
|
| -
|
| - void CloseDevToolsWindow() {
|
| - DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
|
| - // UnregisterDevToolsClientHostFor may destroy window_ so store the browser
|
| - // first.
|
| - Browser* browser = window_->browser();
|
| - devtools_manager->UnregisterDevToolsClientHostFor(inspected_rvh_);
|
| -
|
| - // Wait only when DevToolsWindow has a browser. For docked DevTools, this
|
| - // is NULL and we skip the wait.
|
| - if (browser)
|
| - BrowserClosedObserver close_observer(browser);
|
| - }
|
| -
|
| - TabContents* client_contents_;
|
| - DevToolsWindow* window_;
|
| - RenderViewHost* inspected_rvh_;
|
| -};
|
| -
|
| -
|
| -class CancelableQuitTask : public Task {
|
| - public:
|
| - explicit CancelableQuitTask(const std::string& timeout_message)
|
| - : timeout_message_(timeout_message),
|
| - cancelled_(false) {
|
| - }
|
| -
|
| - void cancel() {
|
| - cancelled_ = true;
|
| - }
|
| -
|
| - virtual void Run() {
|
| - if (cancelled_) {
|
| - return;
|
| - }
|
| - FAIL() << timeout_message_;
|
| - MessageLoop::current()->Quit();
|
| - }
|
| -
|
| - private:
|
| - std::string timeout_message_;
|
| - bool cancelled_;
|
| -};
|
| -
|
| -
|
| -// Base class for DevTools tests that test devtools functionality for
|
| -// extensions and content scripts.
|
| -class DevToolsExtensionDebugTest : public DevToolsSanityTest,
|
| - public NotificationObserver {
|
| - public:
|
| - DevToolsExtensionDebugTest() : DevToolsSanityTest() {
|
| - PathService::Get(chrome::DIR_TEST_DATA, &test_extensions_dir_);
|
| - test_extensions_dir_ = test_extensions_dir_.AppendASCII("devtools");
|
| - test_extensions_dir_ = test_extensions_dir_.AppendASCII("extensions");
|
| + EXPECT_EQ("[OK]", result);
|
| + } else {
|
| + FAIL() << "DevTools front-end is broken.";
|
| }
|
| + CloseDevToolsWindow();
|
| +}
|
|
|
| - protected:
|
| - // Load an extention from test\data\devtools\extensions\<extension_name>
|
| - void LoadExtension(const char* extension_name) {
|
| - FilePath path = test_extensions_dir_.AppendASCII(extension_name);
|
| - ASSERT_TRUE(LoadExtensionFromPath(path)) << "Failed to load extension.";
|
| - }
|
| +void DevToolsSanityTest::OpenDevToolsWindow(const std::string& test_page) {
|
| + ASSERT_TRUE(test_server()->Start());
|
| + GURL url = test_server()->GetURL(test_page);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| +
|
| + inspected_rvh_ = GetInspectedTab()->render_view_host();
|
| + DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
|
| + devtools_manager->OpenDevToolsWindow(inspected_rvh_);
|
| +
|
| + DevToolsClientHost* client_host =
|
| + devtools_manager->GetDevToolsClientHostFor(inspected_rvh_);
|
| + window_ = client_host->AsDevToolsWindow();
|
| + RenderViewHost* client_rvh = window_->GetRenderViewHost();
|
| + client_contents_ = client_rvh->delegate()->GetAsTabContents();
|
| + ui_test_utils::WaitForNavigation(&client_contents_->controller());
|
| +}
|
|
|
| - private:
|
| - bool LoadExtensionFromPath(const FilePath& path) {
|
| - ExtensionService* service = browser()->profile()->GetExtensionService();
|
| - size_t num_before = service->extensions()->size();
|
| - {
|
| - NotificationRegistrar registrar;
|
| - registrar.Add(this, NotificationType::EXTENSION_LOADED,
|
| - NotificationService::AllSources());
|
| - CancelableQuitTask* delayed_quit =
|
| - new CancelableQuitTask("Extension load timed out.");
|
| - MessageLoop::current()->PostDelayedTask(FROM_HERE, delayed_quit,
|
| - 4*1000);
|
| - service->LoadExtension(path);
|
| - ui_test_utils::RunMessageLoop();
|
| - delayed_quit->cancel();
|
| - }
|
| - size_t num_after = service->extensions()->size();
|
| - if (num_after != (num_before + 1))
|
| - return false;
|
| -
|
| - return WaitForExtensionHostsToLoad();
|
| - }
|
| +TabContents* DevToolsSanityTest::GetInspectedTab() {
|
| + return browser()->GetTabContentsAt(0);
|
| +}
|
|
|
| - bool WaitForExtensionHostsToLoad() {
|
| - // Wait for all the extension hosts that exist to finish loading.
|
| - // NOTE: This assumes that the extension host list is not changing while
|
| - // this method is running.
|
| -
|
| - NotificationRegistrar registrar;
|
| - registrar.Add(this, NotificationType::EXTENSION_HOST_DID_STOP_LOADING,
|
| - NotificationService::AllSources());
|
| - CancelableQuitTask* delayed_quit =
|
| - new CancelableQuitTask("Extension host load timed out.");
|
| - MessageLoop::current()->PostDelayedTask(FROM_HERE, delayed_quit,
|
| - 4*1000);
|
| -
|
| - ExtensionProcessManager* manager =
|
| - browser()->profile()->GetExtensionProcessManager();
|
| - for (ExtensionProcessManager::const_iterator iter = manager->begin();
|
| - iter != manager->end();) {
|
| - if ((*iter)->did_stop_loading())
|
| - ++iter;
|
| - else
|
| - ui_test_utils::RunMessageLoop();
|
| - }
|
| -
|
| - delayed_quit->cancel();
|
| - return true;
|
| - }
|
| +void DevToolsSanityTest::CloseDevToolsWindow() {
|
| + DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
|
| + // UnregisterDevToolsClientHostFor may destroy window_ so store the browser
|
| + // first.
|
| + Browser* browser = window_->browser();
|
| + devtools_manager->UnregisterDevToolsClientHostFor(inspected_rvh_);
|
| +
|
| + // Wait only when DevToolsWindow has a browser. For docked DevTools, this
|
| + // is NULL and we skip the wait.
|
| + if (browser)
|
| + BrowserClosedObserver close_observer(browser);
|
| +}
|
|
|
| - void Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - switch (type.value) {
|
| - case NotificationType::EXTENSION_LOADED:
|
| - case NotificationType::EXTENSION_HOST_DID_STOP_LOADING:
|
| - MessageLoopForUI::current()->Quit();
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - }
|
|
|
| - FilePath test_extensions_dir_;
|
| -};
|
| +namespace {
|
|
|
| // Tests scripts panel showing.
|
| IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestShowScriptsTab) {
|
| @@ -260,14 +147,6 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest,
|
| kDebuggerTestPage);
|
| }
|
|
|
| -// Tests that a content script is in the scripts list.
|
| -// This test is disabled, see bug 28961.
|
| -IN_PROC_BROWSER_TEST_F(DevToolsExtensionDebugTest,
|
| - TestContentScriptIsPresent) {
|
| - LoadExtension("simple_content_script");
|
| - RunTest("testContentScriptIsPresent", kPageWithContentScript);
|
| -}
|
| -
|
| // Tests that scripts are not duplicated after Scripts Panel switch.
|
| IN_PROC_BROWSER_TEST_F(DevToolsSanityTest,
|
| TestNoScriptDuplicatesOnPanelSwitch) {
|
|
|