Home | History | Annotate | Download | only in webui
      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