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

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

Issue 6772022: Make <all_urls> and file:///* in permissions trigger "Allow file access" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for landing Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/user_script_master.h" 5 #include "chrome/browser/extensions/user_script_master.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 switch (type.value) { 338 switch (type.value) {
339 case NotificationType::EXTENSIONS_READY: 339 case NotificationType::EXTENSIONS_READY:
340 extensions_service_ready_ = true; 340 extensions_service_ready_ = true;
341 StartScan(); 341 StartScan();
342 break; 342 break;
343 case NotificationType::EXTENSION_LOADED: { 343 case NotificationType::EXTENSION_LOADED: {
344 // Add any content scripts inside the extension. 344 // Add any content scripts inside the extension.
345 const Extension* extension = Details<const Extension>(details).ptr(); 345 const Extension* extension = Details<const Extension>(details).ptr();
346 bool incognito_enabled = profile_->GetExtensionService()-> 346 bool incognito_enabled = profile_->GetExtensionService()->
347 IsIncognitoEnabled(extension); 347 IsIncognitoEnabled(extension);
348 bool allow_file_access = profile_->GetExtensionService()->
349 AllowFileAccess(extension);
350 const UserScriptList& scripts = extension->content_scripts(); 348 const UserScriptList& scripts = extension->content_scripts();
351 for (UserScriptList::const_iterator iter = scripts.begin(); 349 for (UserScriptList::const_iterator iter = scripts.begin();
352 iter != scripts.end(); ++iter) { 350 iter != scripts.end(); ++iter) {
353 lone_scripts_.push_back(*iter); 351 lone_scripts_.push_back(*iter);
354 lone_scripts_.back().set_incognito_enabled(incognito_enabled); 352 lone_scripts_.back().set_incognito_enabled(incognito_enabled);
355 lone_scripts_.back().set_allow_file_access(allow_file_access);
356 } 353 }
357 if (extensions_service_ready_) 354 if (extensions_service_ready_)
358 StartScan(); 355 StartScan();
359 break; 356 break;
360 } 357 }
361 case NotificationType::EXTENSION_UNLOADED: { 358 case NotificationType::EXTENSION_UNLOADED: {
362 // Remove any content scripts. 359 // Remove any content scripts.
363 const Extension* extension = 360 const Extension* extension =
364 Details<UnloadedExtensionInfo>(details)->extension; 361 Details<UnloadedExtensionInfo>(details)->extension;
365 UserScriptList new_lone_scripts; 362 UserScriptList new_lone_scripts;
366 for (UserScriptList::iterator iter = lone_scripts_.begin(); 363 for (UserScriptList::iterator iter = lone_scripts_.begin();
367 iter != lone_scripts_.end(); ++iter) { 364 iter != lone_scripts_.end(); ++iter) {
368 if (iter->extension_id() != extension->id()) 365 if (iter->extension_id() != extension->id())
369 new_lone_scripts.push_back(*iter); 366 new_lone_scripts.push_back(*iter);
370 } 367 }
371 lone_scripts_ = new_lone_scripts; 368 lone_scripts_ = new_lone_scripts;
372 StartScan(); 369 StartScan();
373 370
374 // TODO(aa): Do we want to do something smarter for the scripts that have 371 // TODO(aa): Do we want to do something smarter for the scripts that have
375 // already been injected? 372 // already been injected?
376 373
377 break; 374 break;
378 } 375 }
379 case NotificationType::EXTENSION_USER_SCRIPTS_UPDATED: { 376 case NotificationType::EXTENSION_USER_SCRIPTS_UPDATED: {
380 const Extension* extension = Details<const Extension>(details).ptr(); 377 const Extension* extension = Details<const Extension>(details).ptr();
381 UserScriptList new_lone_scripts; 378 UserScriptList new_lone_scripts;
382 bool incognito_enabled = profile_->GetExtensionService()-> 379 bool incognito_enabled = profile_->GetExtensionService()->
383 IsIncognitoEnabled(extension); 380 IsIncognitoEnabled(extension);
384 bool allow_file_access = profile_->GetExtensionService()->
385 AllowFileAccess(extension);
386 for (UserScriptList::iterator iter = lone_scripts_.begin(); 381 for (UserScriptList::iterator iter = lone_scripts_.begin();
387 iter != lone_scripts_.end(); ++iter) { 382 iter != lone_scripts_.end(); ++iter) {
388 if (iter->extension_id() == extension->id()) { 383 if (iter->extension_id() == extension->id()) {
389 iter->set_incognito_enabled(incognito_enabled); 384 iter->set_incognito_enabled(incognito_enabled);
390 iter->set_allow_file_access(allow_file_access);
391 } 385 }
392 } 386 }
393 StartScan(); 387 StartScan();
394 break; 388 break;
395 } 389 }
396 390
397 default: 391 default:
398 DCHECK(false); 392 DCHECK(false);
399 } 393 }
400 } 394 }
401 395
402 void UserScriptMaster::StartScan() { 396 void UserScriptMaster::StartScan() {
403 if (!script_reloader_) 397 if (!script_reloader_)
404 script_reloader_ = new ScriptReloader(this); 398 script_reloader_ = new ScriptReloader(this);
405 399
406 script_reloader_->StartScan(user_script_dir_, lone_scripts_); 400 script_reloader_->StartScan(user_script_dir_, lone_scripts_);
407 } 401 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extensions_ui.cc ('k') | chrome/browser/ui/webui/options/extension_settings_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698