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 |