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

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

Issue 12089037: Add management.uninstallSelf to API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync Created 7 years, 10 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 "chrome/browser/extensions/api/management/management_api.h" 5 #include "chrome/browser/extensions/api/management/management_api.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 SendResponse(true); 500 SendResponse(true);
501 Release(); 501 Release();
502 } 502 }
503 503
504 void ManagementSetEnabledFunction::InstallUIAbort(bool user_initiated) { 504 void ManagementSetEnabledFunction::InstallUIAbort(bool user_initiated) {
505 error_ = keys::kUserDidNotReEnableError; 505 error_ = keys::kUserDidNotReEnableError;
506 SendResponse(false); 506 SendResponse(false);
507 Release(); 507 Release();
508 } 508 }
509 509
510 ManagementUninstallFunction::ManagementUninstallFunction() { 510 ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() {
511 } 511 }
512 512
513 ManagementUninstallFunction::~ManagementUninstallFunction() { 513 ManagementUninstallFunctionBase::~ManagementUninstallFunctionBase() {
514 } 514 }
515 515
516 bool ManagementUninstallFunction::RunImpl() { 516 bool ManagementUninstallFunctionBase::Uninstall(
517 scoped_ptr<management::Uninstall::Params> params( 517 const std::string& extension_id,
518 management::Uninstall::Params::Create(*args_)); 518 bool show_confirm_dialog) {
519 EXTENSION_FUNCTION_VALIDATE(params.get()); 519 extension_id_ = extension_id;
520
521 extension_id_ = params->id;
522
523 bool show_confirm_dialog = false;
524 if (params->options.get() && params->options->show_confirm_dialog.get())
525 show_confirm_dialog = *params->options->show_confirm_dialog;
526
527 const Extension* extension = service()->GetExtensionById(extension_id_, true); 520 const Extension* extension = service()->GetExtensionById(extension_id_, true);
528 if (!extension) { 521 if (!extension) {
529 error_ = ErrorUtils::FormatErrorMessage( 522 error_ = ErrorUtils::FormatErrorMessage(
530 keys::kNoExtensionError, extension_id_); 523 keys::kNoExtensionError, extension_id_);
531 return false; 524 return false;
532 } 525 }
533 526
534 if (!ExtensionSystem::Get(profile())->management_policy()-> 527 if (!ExtensionSystem::Get(profile())->management_policy()->
535 UserMayModifySettings(extension, NULL)) { 528 UserMayModifySettings(extension, NULL)) {
536 error_ = ErrorUtils::FormatErrorMessage( 529 error_ = ErrorUtils::FormatErrorMessage(
(...skipping 11 matching lines...) Expand all
548 Finish(true); 541 Finish(true);
549 } 542 }
550 } else { 543 } else {
551 Finish(auto_confirm_for_test == PROCEED); 544 Finish(auto_confirm_for_test == PROCEED);
552 } 545 }
553 546
554 return true; 547 return true;
555 } 548 }
556 549
557 // static 550 // static
558 void ManagementUninstallFunction::SetAutoConfirmForTest(bool should_proceed) { 551 void ManagementUninstallFunctionBase::SetAutoConfirmForTest(
552 bool should_proceed) {
559 auto_confirm_for_test = should_proceed ? PROCEED : ABORT; 553 auto_confirm_for_test = should_proceed ? PROCEED : ABORT;
560 } 554 }
561 555
562 void ManagementUninstallFunction::Finish(bool should_uninstall) { 556 void ManagementUninstallFunctionBase::Finish(bool should_uninstall) {
563 if (should_uninstall) { 557 if (should_uninstall) {
564 bool success = service()->UninstallExtension( 558 bool success = service()->UninstallExtension(
565 extension_id_, 559 extension_id_,
566 false, /* external uninstall */ 560 false, /* external uninstall */
567 NULL); 561 NULL);
568 562
569 // TODO set error_ if !success 563 // TODO set error_ if !success
570 SendResponse(success); 564 SendResponse(success);
571 } else { 565 } else {
572 error_ = ErrorUtils::FormatErrorMessage( 566 error_ = ErrorUtils::FormatErrorMessage(
573 keys::kUninstallCanceledError, extension_id_); 567 keys::kUninstallCanceledError, extension_id_);
574 SendResponse(false); 568 SendResponse(false);
575 } 569 }
576 570
577 } 571 }
578 572
579 void ManagementUninstallFunction::ExtensionUninstallAccepted() { 573 void ManagementUninstallFunctionBase::ExtensionUninstallAccepted() {
580 Finish(true); 574 Finish(true);
581 Release(); 575 Release();
582 } 576 }
583 577
584 void ManagementUninstallFunction::ExtensionUninstallCanceled() { 578 void ManagementUninstallFunctionBase::ExtensionUninstallCanceled() {
585 Finish(false); 579 Finish(false);
586 Release(); 580 Release();
587 } 581 }
588 582
583 ManagementUninstallFunction::ManagementUninstallFunction() {
584 }
585
586 ManagementUninstallFunction::~ManagementUninstallFunction() {
587 }
588
589 bool ManagementUninstallFunction::RunImpl() {
590 scoped_ptr<management::Uninstall::Params> params(
591 management::Uninstall::Params::Create(*args_));
592 EXTENSION_FUNCTION_VALIDATE(params.get());
593
594 bool show_confirm_dialog = false;
595 if (params->options.get() && params->options->show_confirm_dialog.get())
596 show_confirm_dialog = *params->options->show_confirm_dialog;
597
598 return Uninstall(params->id, show_confirm_dialog);
599 }
600
601 ManagementUninstallSelfFunction::ManagementUninstallSelfFunction() {
602 }
603
604 ManagementUninstallSelfFunction::~ManagementUninstallSelfFunction() {
605 }
606
607 bool ManagementUninstallSelfFunction::RunImpl() {
608 scoped_ptr<management::UninstallSelf::Params> params(
609 management::UninstallSelf::Params::Create(*args_));
610 EXTENSION_FUNCTION_VALIDATE(params.get());
611
612 bool show_confirm_dialog = false;
613 if (params->options.get() && params->options->show_confirm_dialog.get())
614 show_confirm_dialog = *params->options->show_confirm_dialog;
615 return Uninstall(extension_->id(), show_confirm_dialog);
616 }
617
589 ManagementEventRouter::ManagementEventRouter(Profile* profile) 618 ManagementEventRouter::ManagementEventRouter(Profile* profile)
590 : profile_(profile) { 619 : profile_(profile) {
591 int types[] = { 620 int types[] = {
592 chrome::NOTIFICATION_EXTENSION_INSTALLED, 621 chrome::NOTIFICATION_EXTENSION_INSTALLED,
593 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, 622 chrome::NOTIFICATION_EXTENSION_UNINSTALLED,
594 chrome::NOTIFICATION_EXTENSION_LOADED, 623 chrome::NOTIFICATION_EXTENSION_LOADED,
595 chrome::NOTIFICATION_EXTENSION_UNLOADED 624 chrome::NOTIFICATION_EXTENSION_UNLOADED
596 }; 625 };
597 626
598 CHECK(registrar_.IsEmpty()); 627 CHECK(registrar_.IsEmpty());
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 ProfileKeyedAPIFactory<ManagementAPI>* ManagementAPI::GetFactoryInstance() { 708 ProfileKeyedAPIFactory<ManagementAPI>* ManagementAPI::GetFactoryInstance() {
680 return &g_factory.Get(); 709 return &g_factory.Get();
681 } 710 }
682 711
683 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { 712 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) {
684 management_event_router_.reset(new ManagementEventRouter(profile_)); 713 management_event_router_.reset(new ManagementEventRouter(profile_));
685 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); 714 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this);
686 } 715 }
687 716
688 } // namespace extensions 717 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698