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

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

Issue 2740853002: Use PreloadCheckGroup in ExtensionInstallChecker. Make RequirementsChecker a PreloadCheck. (Closed)
Patch Set: Created 3 years, 9 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 <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
14 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/metrics/histogram.h" 18 #include "base/metrics/histogram.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/strings/string_number_conversions.h" 20 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/string_util.h"
22 #include "base/strings/utf_string_conversions.h" 21 #include "base/strings/utf_string_conversions.h"
23 #include "base/threading/thread_task_runner_handle.h" 22 #include "base/threading/thread_task_runner_handle.h"
24 #include "build/build_config.h" 23 #include "build/build_config.h"
25 #include "content/public/browser/browser_context.h" 24 #include "content/public/browser/browser_context.h"
26 #include "extensions/browser/api/extensions_api_client.h" 25 #include "extensions/browser/api/extensions_api_client.h"
27 #include "extensions/browser/api/management/management_api_constants.h" 26 #include "extensions/browser/api/management/management_api_constants.h"
28 #include "extensions/browser/event_router.h" 27 #include "extensions/browser/event_router.h"
29 #include "extensions/browser/extension_prefs.h" 28 #include "extensions/browser/extension_prefs.h"
30 #include "extensions/browser/extension_registry.h" 29 #include "extensions/browser/extension_registry.h"
31 #include "extensions/browser/extension_system.h" 30 #include "extensions/browser/extension_system.h"
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 439
441 AddRef(); // Matched in OnInstallPromptDone(). 440 AddRef(); // Matched in OnInstallPromptDone().
442 install_prompt_ = delegate->SetEnabledFunctionDelegate( 441 install_prompt_ = delegate->SetEnabledFunctionDelegate(
443 GetSenderWebContents(), browser_context(), extension, 442 GetSenderWebContents(), browser_context(), extension,
444 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this)); 443 base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this));
445 return RespondLater(); 444 return RespondLater();
446 } 445 }
447 if (prefs->GetDisableReasons(extension_id_) & 446 if (prefs->GetDisableReasons(extension_id_) &
448 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { 447 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) {
449 // Recheck the requirements. 448 // Recheck the requirements.
450 requirements_checker_ = delegate->CreateRequirementsChecker(); 449 requirements_checker_ =
451 requirements_checker_->Check( 450 base::MakeUnique<extensions::RequirementsChecker>(extension);
452 extension, 451 requirements_checker_->Start(
453 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked, 452 base::Bind(&ManagementSetEnabledFunction::OnRequirementsChecked,
454 this)); // This bind creates a reference. 453 this)); // This bind creates a reference.
455 return RespondLater(); 454 return RespondLater();
456 } 455 }
457 delegate->EnableExtension(browser_context(), extension_id_); 456 delegate->EnableExtension(browser_context(), extension_id_);
458 } else if (currently_enabled && !params->enabled) { 457 } else if (currently_enabled && !params->enabled) {
459 delegate->DisableExtension(browser_context(), extension_id_, 458 delegate->DisableExtension(browser_context(), extension_id_,
460 Extension::DISABLE_USER_ACTION); 459 Extension::DISABLE_USER_ACTION);
461 } 460 }
462 461
463 return RespondNow(NoArguments()); 462 return RespondNow(NoArguments());
464 } 463 }
465 464
466 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) { 465 void ManagementSetEnabledFunction::OnInstallPromptDone(bool did_accept) {
467 if (did_accept) { 466 if (did_accept) {
468 ManagementAPI::GetFactoryInstance() 467 ManagementAPI::GetFactoryInstance()
469 ->Get(browser_context()) 468 ->Get(browser_context())
470 ->GetDelegate() 469 ->GetDelegate()
471 ->EnableExtension(browser_context(), extension_id_); 470 ->EnableExtension(browser_context(), extension_id_);
472 Respond(OneArgument(base::MakeUnique<base::Value>(true))); 471 Respond(OneArgument(base::MakeUnique<base::Value>(true)));
473 } else { 472 } else {
474 Respond(Error(keys::kUserDidNotReEnableError)); 473 Respond(Error(keys::kUserDidNotReEnableError));
475 } 474 }
476 475
477 Release(); // Balanced in Run(). 476 Release(); // Balanced in Run().
478 } 477 }
479 478
480 void ManagementSetEnabledFunction::OnRequirementsChecked( 479 void ManagementSetEnabledFunction::OnRequirementsChecked(
481 const std::vector<std::string>& requirements_errors) { 480 PreloadCheck::Errors requirements_errors) {
482 if (requirements_errors.empty()) { 481 if (requirements_errors.empty()) {
483 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()-> 482 ManagementAPI::GetFactoryInstance()->Get(browser_context())->GetDelegate()->
484 EnableExtension(browser_context(), extension_id_); 483 EnableExtension(browser_context(), extension_id_);
485 Respond(NoArguments()); 484 Respond(NoArguments());
486 } else { 485 } else {
487 // TODO(devlin): Should we really be noisy here all the time? 486 // TODO(devlin): Should we really be noisy here all the time?
488 Respond(Error(keys::kMissingRequirementsError, 487 Respond(Error(keys::kMissingRequirementsError,
489 base::JoinString(requirements_errors, " "))); 488 base::UTF16ToUTF8(requirements_checker_->GetErrorMessage())));
490 } 489 }
491 } 490 }
492 491
493 ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() { 492 ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() {
494 } 493 }
495 494
496 ManagementUninstallFunctionBase::~ManagementUninstallFunctionBase() { 495 ManagementUninstallFunctionBase::~ManagementUninstallFunctionBase() {
497 } 496 }
498 497
499 ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall( 498 ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall(
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 ManagementAPI::GetFactoryInstance() { 865 ManagementAPI::GetFactoryInstance() {
867 return g_factory.Pointer(); 866 return g_factory.Pointer();
868 } 867 }
869 868
870 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { 869 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) {
871 management_event_router_.reset(new ManagementEventRouter(browser_context_)); 870 management_event_router_.reset(new ManagementEventRouter(browser_context_));
872 EventRouter::Get(browser_context_)->UnregisterObserver(this); 871 EventRouter::Get(browser_context_)->UnregisterObserver(this);
873 } 872 }
874 873
875 } // namespace extensions 874 } // 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