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

Side by Side Diff: chrome/browser/automation/testing_automation_provider.cc

Issue 131743021: app_shell: Extract extension runtime data from ExtensionService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, RuntimeDataTest tweak, win warning Created 6 years, 11 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/automation/testing_automation_provider.h" 5 #include "chrome/browser/automation/testing_automation_provider.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 3428 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 "Missing or invalid 'path'"); 3439 "Missing or invalid 'path'");
3440 return; 3440 return;
3441 } 3441 }
3442 if (!args->GetBoolean("with_ui", &with_ui)) { 3442 if (!args->GetBoolean("with_ui", &with_ui)) {
3443 AutomationJSONReply(this, reply_message).SendError( 3443 AutomationJSONReply(this, reply_message).SendError(
3444 "Missing or invalid 'with_ui'"); 3444 "Missing or invalid 'with_ui'");
3445 return; 3445 return;
3446 } 3446 }
3447 args->GetBoolean("from_webstore", &from_webstore); 3447 args->GetBoolean("from_webstore", &from_webstore);
3448 3448
3449 ExtensionService* service = extensions::ExtensionSystem::Get( 3449 extensions::ExtensionSystem* system =
3450 browser->profile())->extension_service(); 3450 extensions::ExtensionSystem::Get(browser->profile());
3451 extensions::ProcessManager* manager = 3451 ExtensionService* service = system->extension_service();
3452 extensions::ExtensionSystem::Get(browser->profile())->process_manager(); 3452 if (service) {
3453 if (service && manager) {
3454 // The observer will delete itself when done. 3453 // The observer will delete itself when done.
3455 new ExtensionReadyNotificationObserver( 3454 new ExtensionReadyNotificationObserver(
3456 manager, 3455 system,
3457 service,
3458 this, 3456 this,
3459 reply_message); 3457 reply_message);
3460 3458
3461 base::FilePath extension_path(path_string); 3459 base::FilePath extension_path(path_string);
3462 // If the given path has a 'crx' extension, assume it is a packed extension 3460 // If the given path has a 'crx' extension, assume it is a packed extension
3463 // and install it. Otherwise load it as an unpacked extension. 3461 // and install it. Otherwise load it as an unpacked extension.
3464 if (extension_path.MatchesExtension(FILE_PATH_LITERAL(".crx"))) { 3462 if (extension_path.MatchesExtension(FILE_PATH_LITERAL(".crx"))) {
3465 scoped_ptr<ExtensionInstallPrompt> client( 3463 scoped_ptr<ExtensionInstallPrompt> client(
3466 with_ui ? new ExtensionInstallPrompt(tab) : NULL); 3464 with_ui ? new ExtensionInstallPrompt(tab) : NULL);
3467 scoped_refptr<extensions::CrxInstaller> installer( 3465 scoped_refptr<extensions::CrxInstaller> installer(
3468 extensions::CrxInstaller::Create(service, client.Pass())); 3466 extensions::CrxInstaller::Create(service, client.Pass()));
3469 if (!with_ui) 3467 if (!with_ui)
3470 installer->set_allow_silent_install(true); 3468 installer->set_allow_silent_install(true);
3471 installer->set_install_cause(extension_misc::INSTALL_CAUSE_AUTOMATION); 3469 installer->set_install_cause(extension_misc::INSTALL_CAUSE_AUTOMATION);
3472 if (from_webstore) 3470 if (from_webstore)
3473 installer->set_creation_flags(Extension::FROM_WEBSTORE); 3471 installer->set_creation_flags(Extension::FROM_WEBSTORE);
3474 installer->InstallCrx(extension_path); 3472 installer->InstallCrx(extension_path);
3475 } else { 3473 } else {
3476 scoped_refptr<extensions::UnpackedInstaller> installer( 3474 scoped_refptr<extensions::UnpackedInstaller> installer(
3477 extensions::UnpackedInstaller::Create(service)); 3475 extensions::UnpackedInstaller::Create(service));
3478 installer->set_prompt_for_plugins(with_ui); 3476 installer->set_prompt_for_plugins(with_ui);
3479 installer->Load(extension_path); 3477 installer->Load(extension_path);
3480 } 3478 }
3481 } else { 3479 } else {
3482 AutomationJSONReply(this, reply_message).SendError( 3480 AutomationJSONReply(this, reply_message).SendError(
3483 "Extensions service/process manager is not available"); 3481 "Extensions service is not available");
3484 } 3482 }
3485 } 3483 }
3486 3484
3487 namespace { 3485 namespace {
3488 3486
3489 base::ListValue* GetHostPermissions(const Extension* ext, bool effective_perm) { 3487 base::ListValue* GetHostPermissions(const Extension* ext, bool effective_perm) {
3490 extensions::URLPatternSet pattern_set; 3488 extensions::URLPatternSet pattern_set;
3491 if (effective_perm) { 3489 if (effective_perm) {
3492 pattern_set = 3490 pattern_set =
3493 extensions::PermissionsData::GetEffectiveHostPermissions(ext); 3491 extensions::PermissionsData::GetEffectiveHostPermissions(ext);
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
3653 return; 3651 return;
3654 } 3652 }
3655 3653
3656 if (allow_in_incognito && !enable) { 3654 if (allow_in_incognito && !enable) {
3657 AutomationJSONReply(this, reply_message) 3655 AutomationJSONReply(this, reply_message)
3658 .SendError("Invalid state: Disabled extension " 3656 .SendError("Invalid state: Disabled extension "
3659 "cannot be allowed in incognito mode."); 3657 "cannot be allowed in incognito mode.");
3660 return; 3658 return;
3661 } 3659 }
3662 3660
3663 ExtensionService* service = extensions::ExtensionSystem::Get( 3661 extensions::ExtensionSystem* system =
3664 browser->profile())->extension_service(); 3662 extensions::ExtensionSystem::Get(browser->profile());
3665 extensions::ProcessManager* manager = 3663 ExtensionService* service = system->extension_service();
3666 extensions::ExtensionSystem::Get(browser->profile())->process_manager();
3667 if (!service) { 3664 if (!service) {
3668 AutomationJSONReply(this, reply_message) 3665 AutomationJSONReply(this, reply_message)
3669 .SendError("No extensions service or process manager."); 3666 .SendError("No extensions service.");
3670 return; 3667 return;
3671 } 3668 }
3672 3669
3673 if (enable) { 3670 if (enable) {
3674 if (!service->IsExtensionEnabled(extension->id())) { 3671 if (!service->IsExtensionEnabled(extension->id())) {
3675 new ExtensionReadyNotificationObserver( 3672 new ExtensionReadyNotificationObserver(
3676 manager, 3673 system,
3677 service,
3678 this, 3674 this,
3679 reply_message); 3675 reply_message);
3680 service->EnableExtension(extension->id()); 3676 service->EnableExtension(extension->id());
3681 } else { 3677 } else {
3682 AutomationJSONReply(this, reply_message).SendSuccess(NULL); 3678 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
3683 } 3679 }
3684 } else { 3680 } else {
3685 service->DisableExtension(extension->id(), 3681 service->DisableExtension(extension->id(),
3686 Extension::DISABLE_USER_ACTION); 3682 Extension::DISABLE_USER_ACTION);
3687 AutomationJSONReply(this, reply_message).SendSuccess(NULL); 3683 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
(...skipping 1710 matching lines...) Expand 10 before | Expand all | Expand 10 after
5398 if (g_browser_process) 5394 if (g_browser_process)
5399 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); 5395 g_browser_process->GetAutomationProviderList()->RemoveProvider(this);
5400 } 5396 }
5401 5397
5402 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, 5398 void TestingAutomationProvider::EnsureTabSelected(Browser* browser,
5403 WebContents* tab) { 5399 WebContents* tab) {
5404 TabStripModel* tab_strip = browser->tab_strip_model(); 5400 TabStripModel* tab_strip = browser->tab_strip_model();
5405 if (tab_strip->GetActiveWebContents() != tab) 5401 if (tab_strip->GetActiveWebContents() != tab)
5406 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); 5402 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true);
5407 } 5403 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698