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 17using content::WebContents; 18 19namespace { 20 21const char kSharedWorkerTestPage[] = 22 "files/workers/workers_ui_shared_worker.html"; 23const char kSharedWorkerJs[] = 24 "files/workers/workers_ui_shared_worker.js"; 25 26class 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 39IN_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 48IN_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 72IN_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 88IN_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