1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/devtools/device/adb/adb_device_provider.h" 6 #include "chrome/browser/devtools/device/adb/mock_adb_server.h" 7 #include "chrome/browser/devtools/device/devtools_android_bridge.h" 8 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/tabs/tab_strip_model.h" 10 #include "chrome/common/url_constants.h" 11 #include "chrome/test/base/ui_test_utils.h" 12 #include "chrome/test/base/web_ui_browser_test.h" 13 #include "content/public/browser/navigation_details.h" 14 #include "content/public/browser/web_contents.h" 15 #include "content/public/test/browser_test_utils.h" 16 17 using content::WebContents; 18 19 namespace { 20 21 const char kSharedWorkerTestPage[] = 22 "files/workers/workers_ui_shared_worker.html"; 23 const char kSharedWorkerJs[] = 24 "files/workers/workers_ui_shared_worker.js"; 25 26 class InspectUITest : public WebUIBrowserTest { 27 public: 28 InspectUITest() {} 29 30 virtual void SetUpOnMainThread() OVERRIDE { 31 WebUIBrowserTest::SetUpOnMainThread(); 32 AddLibrary(base::FilePath(FILE_PATH_LITERAL("inspect_ui_test.js"))); 33 } 34 35 private: 36 DISALLOW_COPY_AND_ASSIGN(InspectUITest); 37 }; 38 39 IN_PROC_BROWSER_TEST_F(InspectUITest, InspectUIPage) { 40 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL)); 41 ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest( 42 "testTargetListed", 43 new base::StringValue("#pages"), 44 new base::StringValue("populateWebContentsTargets"), 45 new base::StringValue(chrome::kChromeUIInspectURL))); 46 } 47 48 IN_PROC_BROWSER_TEST_F(InspectUITest, SharedWorker) { 49 ASSERT_TRUE(test_server()->Start()); 50 GURL url = test_server()->GetURL(kSharedWorkerTestPage); 51 ui_test_utils::NavigateToURL(browser(), url); 52 53 ui_test_utils::NavigateToURLWithDisposition( 54 browser(), 55 GURL(chrome::kChromeUIInspectURL), 56 NEW_FOREGROUND_TAB, 57 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 58 59 ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest( 60 "testTargetListed", 61 new base::StringValue("#workers"), 62 new base::StringValue("populateWorkerTargets"), 63 new base::StringValue(kSharedWorkerJs))); 64 65 ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest( 66 "testTargetListed", 67 new base::StringValue("#pages"), 68 new base::StringValue("populateWebContentsTargets"), 69 new base::StringValue(kSharedWorkerTestPage))); 70 } 71 72 IN_PROC_BROWSER_TEST_F(InspectUITest, AndroidTargets) { 73 scoped_refptr<DevToolsAndroidBridge> android_bridge = 74 DevToolsAndroidBridge::Factory::GetForProfile(browser()->profile()); 75 AndroidDeviceManager::DeviceProviders providers; 76 providers.push_back(new AdbDeviceProvider()); 77 android_bridge->set_device_providers_for_test(providers); 78 79 StartMockAdbServer(); 80 81 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL)); 82 83 ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest("testAdbTargetsListed")); 84 85 StopMockAdbServer(); 86 } 87 88 IN_PROC_BROWSER_TEST_F(InspectUITest, ReloadCrash) { 89 ASSERT_TRUE(test_server()->Start()); 90 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL)); 91 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL)); 92 } 93 94 } // namespace 95