| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |