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

Side by Side Diff: chrome/browser/extensions/extension_apitest.cc

Issue 555633003: Use extensions::ResultCatcher; delete ExtensionApiTest::ResultCatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 3 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension_apitest.h" 5 #include "chrome/browser/extensions/extension_apitest.h"
6 6
7 #include "base/strings/string_split.h" 7 #include "base/strings/string_split.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "chrome/browser/extensions/extension_service.h" 10 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/unpacked_installer.h" 11 #include "chrome/browser/extensions/unpacked_installer.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
14 #include "chrome/browser/ui/extensions/application_launch.h" 14 #include "chrome/browser/ui/extensions/application_launch.h"
15 #include "chrome/test/base/ui_test_utils.h" 15 #include "chrome/test/base/ui_test_utils.h"
16 #include "content/public/browser/notification_registrar.h"
17 #include "content/public/browser/notification_service.h"
18 #include "extensions/browser/api/test/test_api.h" 16 #include "extensions/browser/api/test/test_api.h"
19 #include "extensions/browser/extension_system.h" 17 #include "extensions/browser/extension_system.h"
20 #include "extensions/browser/notification_types.h"
21 #include "extensions/common/extension.h" 18 #include "extensions/common/extension.h"
22 #include "extensions/common/extension_set.h" 19 #include "extensions/common/extension_set.h"
20 #include "extensions/test/result_catcher.h"
23 #include "net/base/escape.h" 21 #include "net/base/escape.h"
24 #include "net/base/filename_util.h" 22 #include "net/base/filename_util.h"
25 #include "net/test/embedded_test_server/embedded_test_server.h" 23 #include "net/test/embedded_test_server/embedded_test_server.h"
26 #include "net/test/embedded_test_server/http_request.h" 24 #include "net/test/embedded_test_server/http_request.h"
27 #include "net/test/embedded_test_server/http_response.h" 25 #include "net/test/embedded_test_server/http_response.h"
28 #include "net/test/spawned_test_server/spawned_test_server.h" 26 #include "net/test/spawned_test_server/spawned_test_server.h"
29 27
30 namespace { 28 namespace {
31 29
32 const char kTestCustomArg[] = "customArg"; 30 const char kTestCustomArg[] = "customArg";
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 embedded_test_server()->RegisterRequestHandler( 132 embedded_test_server()->RegisterRequestHandler(
135 base::Bind(&HandleEchoHeaderRequest)); 133 base::Bind(&HandleEchoHeaderRequest));
136 embedded_test_server()->RegisterRequestHandler( 134 embedded_test_server()->RegisterRequestHandler(
137 base::Bind(&HandleSetCookieRequest)); 135 base::Bind(&HandleSetCookieRequest));
138 embedded_test_server()->RegisterRequestHandler( 136 embedded_test_server()->RegisterRequestHandler(
139 base::Bind(&HandleSetHeaderRequest)); 137 base::Bind(&HandleSetHeaderRequest));
140 } 138 }
141 139
142 ExtensionApiTest::~ExtensionApiTest() {} 140 ExtensionApiTest::~ExtensionApiTest() {}
143 141
144 ExtensionApiTest::ResultCatcher::ResultCatcher()
145 : profile_restriction_(NULL),
146 waiting_(false) {
147 registrar_.Add(this,
148 extensions::NOTIFICATION_EXTENSION_TEST_PASSED,
149 content::NotificationService::AllSources());
150 registrar_.Add(this,
151 extensions::NOTIFICATION_EXTENSION_TEST_FAILED,
152 content::NotificationService::AllSources());
153 }
154
155 ExtensionApiTest::ResultCatcher::~ResultCatcher() {
156 }
157
158 bool ExtensionApiTest::ResultCatcher::GetNextResult() {
159 // Depending on the tests, multiple results can come in from a single call
160 // to RunMessageLoop(), so we maintain a queue of results and just pull them
161 // off as the test calls this, going to the run loop only when the queue is
162 // empty.
163 if (results_.empty()) {
164 waiting_ = true;
165 content::RunMessageLoop();
166 waiting_ = false;
167 }
168
169 if (!results_.empty()) {
170 bool ret = results_.front();
171 results_.pop_front();
172 message_ = messages_.front();
173 messages_.pop_front();
174 return ret;
175 }
176
177 NOTREACHED();
178 return false;
179 }
180
181 void ExtensionApiTest::ResultCatcher::Observe(
182 int type, const content::NotificationSource& source,
183 const content::NotificationDetails& details) {
184 if (profile_restriction_ &&
185 content::Source<Profile>(source).ptr() != profile_restriction_) {
186 return;
187 }
188
189 switch (type) {
190 case extensions::NOTIFICATION_EXTENSION_TEST_PASSED:
191 VLOG(1) << "Got EXTENSION_TEST_PASSED notification.";
192 results_.push_back(true);
193 messages_.push_back(std::string());
194 if (waiting_)
195 base::MessageLoopForUI::current()->Quit();
196 break;
197
198 case extensions::NOTIFICATION_EXTENSION_TEST_FAILED:
199 VLOG(1) << "Got EXTENSION_TEST_FAILED notification.";
200 results_.push_back(false);
201 messages_.push_back(*(content::Details<std::string>(details).ptr()));
202 if (waiting_)
203 base::MessageLoopForUI::current()->Quit();
204 break;
205
206 default:
207 NOTREACHED();
208 }
209 }
210
211 void ExtensionApiTest::SetUpInProcessBrowserTestFixture() { 142 void ExtensionApiTest::SetUpInProcessBrowserTestFixture() {
212 DCHECK(!test_config_.get()) << "Previous test did not clear config state."; 143 DCHECK(!test_config_.get()) << "Previous test did not clear config state.";
213 test_config_.reset(new base::DictionaryValue()); 144 test_config_.reset(new base::DictionaryValue());
214 test_config_->SetString(kTestDataDirectory, 145 test_config_->SetString(kTestDataDirectory,
215 net::FilePathToFileURL(test_data_dir_).spec()); 146 net::FilePathToFileURL(test_data_dir_).spec());
216 test_config_->SetInteger(kTestWebSocketPort, 0); 147 test_config_->SetInteger(kTestWebSocketPort, 0);
217 extensions::TestGetConfigFunction::set_test_config_state( 148 extensions::TestGetConfigFunction::set_test_config_state(
218 test_config_.get()); 149 test_config_.get());
219 } 150 }
220 151
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 const std::string& page_url, 252 const std::string& page_url,
322 const char* custom_arg, 253 const char* custom_arg,
323 int flags) { 254 int flags) {
324 bool load_as_component = (flags & kFlagLoadAsComponent) != 0; 255 bool load_as_component = (flags & kFlagLoadAsComponent) != 0;
325 bool launch_platform_app = (flags & kFlagLaunchPlatformApp) != 0; 256 bool launch_platform_app = (flags & kFlagLaunchPlatformApp) != 0;
326 bool use_incognito = (flags & kFlagUseIncognito) != 0; 257 bool use_incognito = (flags & kFlagUseIncognito) != 0;
327 258
328 if (custom_arg && custom_arg[0]) 259 if (custom_arg && custom_arg[0])
329 test_config_->SetString(kTestCustomArg, custom_arg); 260 test_config_->SetString(kTestCustomArg, custom_arg);
330 261
331 ResultCatcher catcher; 262 extensions::ResultCatcher catcher;
332 DCHECK(!extension_name.empty() || !page_url.empty()) << 263 DCHECK(!extension_name.empty() || !page_url.empty()) <<
333 "extension_name and page_url cannot both be empty"; 264 "extension_name and page_url cannot both be empty";
334 265
335 const extensions::Extension* extension = NULL; 266 const extensions::Extension* extension = NULL;
336 if (!extension_name.empty()) { 267 if (!extension_name.empty()) {
337 base::FilePath extension_path = test_data_dir_.AppendASCII(extension_name); 268 base::FilePath extension_path = test_data_dir_.AppendASCII(extension_name);
338 if (load_as_component) { 269 if (load_as_component) {
339 extension = LoadExtensionAsComponent(extension_path); 270 extension = LoadExtensionAsComponent(extension_path);
340 } else { 271 } else {
341 int browser_test_flags = ExtensionBrowserTest::kFlagNone; 272 int browser_test_flags = ExtensionBrowserTest::kFlagNone;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 test_config_->SetInteger(kSpawnedTestServerPort, 409 test_config_->SetInteger(kSpawnedTestServerPort,
479 test_server()->host_port_pair().port()); 410 test_server()->host_port_pair().port());
480 411
481 return true; 412 return true;
482 } 413 }
483 414
484 void ExtensionApiTest::SetUpCommandLine(CommandLine* command_line) { 415 void ExtensionApiTest::SetUpCommandLine(CommandLine* command_line) {
485 ExtensionBrowserTest::SetUpCommandLine(command_line); 416 ExtensionBrowserTest::SetUpCommandLine(command_line);
486 test_data_dir_ = test_data_dir_.AppendASCII("api_test"); 417 test_data_dir_ = test_data_dir_.AppendASCII("api_test");
487 } 418 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_apitest.h ('k') | chrome/browser/extensions/extension_bindings_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698