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

Side by Side Diff: extensions/browser/api/management/management_api.cc

Issue 1534123002: [Extensions] Migrate ExtensionInstallPrompt::Delegate to be a callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "extensions/browser/api/management/management_api.h" 5 #include "extensions/browser/api/management/management_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 bool currently_enabled = 444 bool currently_enabled =
445 registry->enabled_extensions().Contains(extension_id_) || 445 registry->enabled_extensions().Contains(extension_id_) ||
446 registry->terminated_extensions().Contains(extension_id_); 446 registry->terminated_extensions().Contains(extension_id_);
447 447
448 if (!currently_enabled && enabled) { 448 if (!currently_enabled && enabled) {
449 ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context()); 449 ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context());
450 if (prefs->DidExtensionEscalatePermissions(extension_id_)) { 450 if (prefs->DidExtensionEscalatePermissions(extension_id_)) {
451 if (!user_gesture()) 451 if (!user_gesture())
452 return RespondNow(Error(keys::kGestureNeededForEscalationError)); 452 return RespondNow(Error(keys::kGestureNeededForEscalationError));
453 453
454 AddRef(); // Matched in InstallUIProceed/InstallUIAbort 454 AddRef(); // Matched in OnInstallPromptDone().
455 install_prompt_ = delegate->SetEnabledFunctionDelegate(this, extension); 455 install_prompt_ = delegate->SetEnabledFunctionDelegate(
456 GetSenderWebContents(), browser_context(), extension,
457 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this));
456 return RespondLater(); 458 return RespondLater();
457 } 459 }
458 if (prefs->GetDisableReasons(extension_id_) & 460 if (prefs->GetDisableReasons(extension_id_) &
459 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { 461 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) {
460 // Recheck the requirements. 462 // Recheck the requirements.
461 requirements_checker_ = delegate->CreateRequirementsChecker(); 463 requirements_checker_ = delegate->CreateRequirementsChecker();
462 requirements_checker_->Check( 464 requirements_checker_->Check(
463 extension, 465 extension,
464 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, 466 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked,
465 this)); // This bind creates a reference. 467 this)); // This bind creates a reference.
466 return RespondLater(); 468 return RespondLater();
467 } 469 }
468 delegate->EnableExtension(browser_context(), extension_id_); 470 delegate->EnableExtension(browser_context(), extension_id_);
469 } else if (currently_enabled && !params->enabled) { 471 } else if (currently_enabled && !params->enabled) {
470 delegate->DisableExtension(browser_context(), extension_id_, 472 delegate->DisableExtension(browser_context(), extension_id_,
471 Extension::DISABLE_USER_ACTION); 473 Extension::DISABLE_USER_ACTION);
472 } 474 }
473 475
474 return RespondNow(NoArguments()); 476 return RespondNow(NoArguments());
475 } 477 }
476 478
477 void ManagementSetEnabledFunction::InstallUIProceed() { 479 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) {
478 ManagementAPI::GetFactoryInstance() 480 if (did_accept) {
479 ->Get(browser_context()) 481 ManagementAPI::GetFactoryInstance()
480 ->GetDelegate() 482 ->Get(browser_context())
481 ->EnableExtension(browser_context(), extension_id_); 483 ->GetDelegate()
482 Respond(OneArgument(new base::FundamentalValue(true))); 484 ->EnableExtension(browser_context(), extension_id_);
483 Release(); 485 Respond(OneArgument(new base::FundamentalValue(true)));
484 } 486 } else {
487 Respond(Error(keys::kUserDidNotReEnableError));
488 }
485 489
486 void ManagementSetEnabledFunction::InstallUIAbort(bool user_initiated) { 490 Release(); // Balanced in Run().
487 Respond(Error(keys::kUserDidNotReEnableError));
488 Release();
489 } 491 }
490 492
491 void ManagementSetEnabledFunction::OnRequirementsChecked( 493 void ManagementSetEnabledFunction::OnRequirementsChecked(
492 const std::vector<std::string>& requirements_errors) { 494 const std::vector<std::string>& requirements_errors) {
493 if (requirements_errors.empty()) { 495 if (requirements_errors.empty()) {
494 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> 496 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()->
495 EnableExtension(browser_context(), extension_id_); 497 EnableExtension(browser_context(), extension_id_);
496 Respond(NoArguments()); 498 Respond(NoArguments());
497 } else { 499 } else {
498 // TODO(devlin): Should we really be noisy here all the time? 500 // TODO(devlin): Should we really be noisy here all the time?
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 ManagementAPI::GetFactoryInstance() { 904 ManagementAPI::GetFactoryInstance() {
903 return g_factory.Pointer(); 905 return g_factory.Pointer();
904 } 906 }
905 907
906 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { 908 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) {
907 management_event_router_.reset(new ManagementEventRouter(browser_context_)); 909 management_event_router_.reset(new ManagementEventRouter(browser_context_));
908 EventRouter::Get(browser_context_)->UnregisterObserver(this); 910 EventRouter::Get(browser_context_)->UnregisterObserver(this);
909 } 911 }
910 912
911 } // namespace extensions 913 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/management/management_api.h ('k') | extensions/browser/api/management/management_api_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698