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

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

Issue 2537263003: [Extensions] Fix lifetime bug in ExtensionAction/IconImage (Closed)
Patch Set: Created 4 years 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_browsertest.h" 5 #include "chrome/browser/extensions/extension_browsertest.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 } 219 }
220 220
221 EXPECT_EQ(0u, extension->install_warnings().size()) 221 EXPECT_EQ(0u, extension->install_warnings().size())
222 << install_warnings_message; 222 << install_warnings_message;
223 return NULL; 223 return NULL;
224 } 224 }
225 } 225 }
226 226
227 const std::string extension_id = extension->id(); 227 const std::string extension_id = extension->id();
228 228
229 // If this is an incognito test (e.g. where the test fixture appended the
230 // --incognito flag), we need to use the original profile when we wait for
231 // notifications.
232 Profile* original_profile = profile()->GetOriginalProfile();
233
229 if (!install_param.empty()) { 234 if (!install_param.empty()) {
230 extensions::ExtensionPrefs::Get(profile()) 235 extensions::ExtensionPrefs::Get(original_profile)
231 ->SetInstallParam(extension_id, install_param); 236 ->SetInstallParam(extension_id, install_param);
232 // Re-enable the extension if needed. 237 // Re-enable the extension if needed.
233 if (registry->enabled_extensions().Contains(extension_id)) { 238 if (registry->enabled_extensions().Contains(extension_id)) {
234 content::WindowedNotificationObserver load_signal( 239 content::WindowedNotificationObserver load_signal(
235 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, 240 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
236 content::Source<Profile>(profile())); 241 content::Source<Profile>(original_profile));
237 // Reload the extension so that the 242 // Reload the extension so that the
238 // NOTIFICATION_EXTENSION_LOADED_DEPRECATED 243 // NOTIFICATION_EXTENSION_LOADED_DEPRECATED
239 // observers may access |install_param|. 244 // observers may access |install_param|.
240 service->ReloadExtension(extension_id); 245 service->ReloadExtension(extension_id);
241 load_signal.Wait(); 246 load_signal.Wait();
242 extension = service->GetExtensionById(extension_id, false); 247 extension = service->GetExtensionById(extension_id, false);
243 CHECK(extension) << extension_id << " not found after reloading."; 248 CHECK(extension) << extension_id << " not found after reloading.";
244 } 249 }
245 } 250 }
246 251
247 // Toggling incognito or file access will reload the extension, so wait for 252 // Toggling incognito or file access will reload the extension, so wait for
248 // the reload and grab the new extension instance. The default state is 253 // the reload and grab the new extension instance. The default state is
249 // incognito disabled and file access enabled, so we don't wait in those 254 // incognito disabled and file access enabled, so we don't wait in those
250 // cases. 255 // cases.
251 { 256 {
252 content::WindowedNotificationObserver load_signal( 257 content::WindowedNotificationObserver load_signal(
253 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, 258 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
254 content::Source<Profile>(profile())); 259 content::Source<Profile>(original_profile));
255 CHECK(!extensions::util::IsIncognitoEnabled(extension_id, profile())) 260 CHECK(!extensions::util::IsIncognitoEnabled(extension_id, original_profile))
256 << extension_id << " is enabled in incognito, but shouldn't be"; 261 << extension_id << " is enabled in incognito, but shouldn't be";
257 262
258 if (flags & kFlagEnableIncognito) { 263 if (flags & kFlagEnableIncognito) {
259 extensions::util::SetIsIncognitoEnabled(extension_id, profile(), true); 264 extensions::util::SetIsIncognitoEnabled(extension_id, original_profile,
265 true);
260 load_signal.Wait(); 266 load_signal.Wait();
261 extension = service->GetExtensionById(extension_id, false); 267 extension = service->GetExtensionById(extension_id, false);
262 CHECK(extension) << extension_id << " not found after reloading."; 268 CHECK(extension) << extension_id << " not found after reloading.";
263 } 269 }
264 } 270 }
265 271
266 { 272 {
267 content::WindowedNotificationObserver load_signal( 273 content::WindowedNotificationObserver load_signal(
268 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, 274 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
269 content::Source<Profile>(profile())); 275 content::Source<Profile>(original_profile));
270 CHECK(extensions::util::AllowFileAccess(extension_id, profile())); 276 CHECK(extensions::util::AllowFileAccess(extension_id, original_profile));
271 if (!(flags & kFlagEnableFileAccess)) { 277 if (!(flags & kFlagEnableFileAccess)) {
272 extensions::util::SetAllowFileAccess(extension_id, profile(), false); 278 extensions::util::SetAllowFileAccess(extension_id, original_profile,
279 false);
273 load_signal.Wait(); 280 load_signal.Wait();
274 extension = service->GetExtensionById(extension_id, false); 281 extension = service->GetExtensionById(extension_id, false);
275 CHECK(extension) << extension_id << " not found after reloading."; 282 CHECK(extension) << extension_id << " not found after reloading.";
276 } 283 }
277 } 284 }
278 285
279 if (!observer_->WaitForExtensionViewsToLoad()) 286 if (!observer_->WaitForExtensionViewsToLoad())
280 return NULL; 287 return NULL;
281 288
282 return extension; 289 return extension;
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 return extensions::browsertest_util::ExecuteScriptInBackgroundPage( 645 return extensions::browsertest_util::ExecuteScriptInBackgroundPage(
639 profile(), extension_id, script); 646 profile(), extension_id, script);
640 } 647 }
641 648
642 bool ExtensionBrowserTest::ExecuteScriptInBackgroundPageNoWait( 649 bool ExtensionBrowserTest::ExecuteScriptInBackgroundPageNoWait(
643 const std::string& extension_id, 650 const std::string& extension_id,
644 const std::string& script) { 651 const std::string& script) {
645 return extensions::browsertest_util::ExecuteScriptInBackgroundPageNoWait( 652 return extensions::browsertest_util::ExecuteScriptInBackgroundPageNoWait(
646 profile(), extension_id, script); 653 profile(), extension_id, script);
647 } 654 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_action_manager.cc ('k') | chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698