Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: chrome/browser/devtools/device/webrtc/devtools_bridge_client_browsertest.cc

Issue 1560583002: DevTools: remove experimental webrtc-based remote debugging device provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more tests/gyp removals Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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/webrtc/devtools_bridge_client_browserte st.h"
6
7 #include <utility>
8
9 #include "chrome/browser/devtools/device/webrtc/devtools_bridge_client.h"
10 #include "chrome/browser/local_discovery/gcd_api_flow.h"
11 #include "chrome/browser/signin/account_tracker_service_factory.h"
12 #include "chrome/browser/signin/fake_signin_manager_builder.h"
13 #include "chrome/browser/ui/browser.h"
14 #include "components/signin/core/browser/account_tracker_service.h"
15 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
16 #include "content/public/browser/web_ui_message_handler.h"
17
18 namespace {
19
20 const char kGaiaId[] = "stub-user@example.com";
21 const char kUsername[] = "stub-user@example.com";
22
23 } // namespace
24
25 class DevToolsBridgeClientBrowserTest::GCDApiFlowMock
26 : public local_discovery::GCDApiFlow {
27 public:
28 explicit GCDApiFlowMock(DevToolsBridgeClientBrowserTest* test)
29 : test_(test), id_(++test->last_flow_id_) {
30 test_->flows_[id_] = this;
31 }
32
33 ~GCDApiFlowMock() override { test_->flows_.erase(id_); }
34
35 // Passes request's data to the JS test. Result will be passed back
36 // in MessageHandler::Response.
37 void Start(scoped_ptr<Request> request) override {
38 request_ = std::move(request);
39
40 std::string type;
41 std::string data;
42 request_->GetUploadData(&type, &data);
43
44 ScopedVector<const base::Value> params;
45 params.push_back(new base::FundamentalValue(id_));
46 params.push_back(new base::StringValue(request_->GetURL().spec()));
47 params.push_back(new base::StringValue(data));
48
49 test_->RunJavascriptFunction("callbacks.gcdApiRequest", params);
50 }
51
52 void Respond(const base::DictionaryValue* response) {
53 if (request_.get())
54 request_->OnGCDAPIFlowComplete(*response);
55 }
56
57 private:
58 DevToolsBridgeClientBrowserTest* const test_;
59 const int id_;
60 scoped_ptr<Request> request_;
61 };
62
63 class DevToolsBridgeClientBrowserTest::DevToolsBridgeClientMock
64 : public DevToolsBridgeClient,
65 public base::SupportsWeakPtr<DevToolsBridgeClientMock> {
66 public:
67 explicit DevToolsBridgeClientMock(DevToolsBridgeClientBrowserTest* test)
68 : DevToolsBridgeClient(test->browser()->profile(),
69 test->fake_signin_manager_.get(),
70 test->fake_token_service_.get()),
71 test_(test) {}
72
73 ~DevToolsBridgeClientMock() override {}
74
75 void DocumentOnLoadCompletedInMainFrame() override {
76 DevToolsBridgeClient::DocumentOnLoadCompletedInMainFrame();
77
78 test_->RunJavascriptFunction("callbacks.workerLoaded");
79 }
80
81 void OnBrowserListUpdatedForTests() override {
82 int count = static_cast<int>(browsers().size());
83 test_->RunJavascriptFunction("callbacks.browserListUpdated",
84 new base::FundamentalValue(count));
85 }
86
87 scoped_ptr<local_discovery::GCDApiFlow> CreateGCDApiFlow() override {
88 return make_scoped_ptr(new GCDApiFlowMock(test_));
89 }
90
91 void GoogleSigninSucceeded() {
92 // This username is checked on Chrome OS.
93 const std::string account_id =
94 AccountTrackerServiceFactory::GetForProfile(
95 test_->browser()->profile())
96 ->PickAccountIdForAccount(kGaiaId, kUsername);
97 test_->fake_signin_manager_->SetAuthenticatedAccountInfo(kGaiaId,
98 kUsername);
99 identity_provider().GoogleSigninSucceeded(account_id, kUsername,
100 "password");
101 }
102
103 private:
104 DevToolsBridgeClientBrowserTest* const test_;
105 };
106
107 class DevToolsBridgeClientBrowserTest::MessageHandler
108 : public content::WebUIMessageHandler {
109 public:
110 explicit MessageHandler(DevToolsBridgeClientBrowserTest* test)
111 : test_(test) {}
112
113 void RegisterMessages() override {
114 web_ui()->RegisterMessageCallback(
115 "signIn", base::Bind(&MessageHandler::SignIn, base::Unretained(this)));
116 web_ui()->RegisterMessageCallback(
117 "gcdApiResponse",
118 base::Bind(&MessageHandler::GCDApiResponse, base::Unretained(this)));
119 web_ui()->RegisterMessageCallback(
120 "queryDevices",
121 base::Bind(&MessageHandler::QueryDevices, base::Unretained(this)));
122 }
123
124 void SignIn(const base::ListValue*) {
125 if (test_->client_mock_.get())
126 test_->client_mock_->GoogleSigninSucceeded();
127 const std::string account_id =
128 AccountTrackerServiceFactory::GetForProfile(
129 test_->browser()->profile())->PickAccountIdForAccount(kGaiaId,
130 kUsername);
131 test_->fake_token_service_->UpdateCredentials(account_id, "token");
132 }
133
134 void GCDApiResponse(const base::ListValue* params) {
135 CHECK(params->GetSize() >= 2);
136 int id;
137 const base::DictionaryValue* response;
138 CHECK(params->GetInteger(0, &id));
139 CHECK(params->GetDictionary(1, &response));
140
141 auto flow = test_->flows_.find(id);
142 CHECK(test_->flows_.end() != flow);
143 flow->second->Respond(response);
144 }
145
146 void QueryDevices(const base::ListValue*) {
147 DevToolsBridgeClient::GetDevices(test_->client_mock_);
148 }
149
150 private:
151 DevToolsBridgeClientBrowserTest* const test_;
152 };
153
154 DevToolsBridgeClientBrowserTest::DevToolsBridgeClientBrowserTest()
155 : last_flow_id_(0) {
156 }
157
158 DevToolsBridgeClientBrowserTest::~DevToolsBridgeClientBrowserTest() {
159 DCHECK(flows_.empty());
160 }
161
162 void DevToolsBridgeClientBrowserTest::SetUpOnMainThread() {
163 WebUIBrowserTest::SetUpOnMainThread();
164
165 DCHECK(browser()->profile());
166 fake_signin_manager_.reset(
167 new FakeSigninManagerForTesting(browser()->profile()));
168 fake_token_service_.reset(new FakeProfileOAuth2TokenService());
169 client_mock_ = (new DevToolsBridgeClientMock(this))->AsWeakPtr();
170 }
171
172 void DevToolsBridgeClientBrowserTest::TearDownOnMainThread() {
173 if (client_mock_.get())
174 client_mock_->DeleteSelf();
175 fake_token_service_.reset();
176 fake_signin_manager_.reset();
177 WebUIBrowserTest::TearDownOnMainThread();
178 }
179
180 content::WebUIMessageHandler*
181 DevToolsBridgeClientBrowserTest::GetMockMessageHandler() {
182 if (!handler_.get())
183 handler_.reset(new MessageHandler(this));
184 return handler_.get();
185 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698