15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/devtools/device/adb/adb_device_provider.h"
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/devtools/device/adb/mock_adb_server.h"
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/devtools/device/devtools_android_bridge.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/test/base/web_ui_browser_test.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_details.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kSharedWorkerTestPage[] =
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "files/workers/workers_ui_shared_worker.html";
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kSharedWorkerJs[] =
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "files/workers/workers_ui_shared_worker.js";
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass InspectUITest : public WebUIBrowserTest {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InspectUITest() {}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void SetUpOnMainThread() OVERRIDE {
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    WebUIBrowserTest::SetUpOnMainThread();
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    AddLibrary(base::FilePath(FILE_PATH_LITERAL("inspect_ui_test.js")));
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(InspectUITest);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(InspectUITest, InspectUIPage) {
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL));
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest(
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      "testTargetListed",
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("#pages"),
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("populateWebContentsTargets"),
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue(chrome::kChromeUIInspectURL)));
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
48effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(InspectUITest, SharedWorker) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url = test_server()->GetURL(kSharedWorkerTestPage);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURL(browser(), url);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURLWithDisposition(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      browser(),
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GURL(chrome::kChromeUIInspectURL),
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      NEW_FOREGROUND_TAB,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest(
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      "testTargetListed",
61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("#workers"),
62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("populateWorkerTargets"),
63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue(kSharedWorkerJs)));
64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest(
66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      "testTargetListed",
67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("#pages"),
68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue("populateWebContentsTargets"),
69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new base::StringValue(kSharedWorkerTestPage)));
70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
720529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochIN_PROC_BROWSER_TEST_F(InspectUITest, AndroidTargets) {
730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_refptr<DevToolsAndroidBridge> android_bridge =
740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      DevToolsAndroidBridge::Factory::GetForProfile(browser()->profile());
75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  AndroidDeviceManager::DeviceProviders providers;
76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  providers.push_back(new AdbDeviceProvider());
770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  android_bridge->set_device_providers_for_test(providers);
78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  StartMockAdbServer();
805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
81c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL));
82effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
83effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ASSERT_TRUE(WebUIBrowserTest::RunJavascriptAsyncTest("testAdbTargetsListed"));
845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  StopMockAdbServer();
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
88558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochIN_PROC_BROWSER_TEST_F(InspectUITest, ReloadCrash) {
89558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  ASSERT_TRUE(test_server()->Start());
90558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL));
91558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIInspectURL));
92558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
93558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
95