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

Side by Side Diff: chrome/browser/ui/webui/extensions/extension_settings_handler.cc

Issue 12288052: Add managed user lock/unlock button for the extensions page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments and rebase to ToT. 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 | Annotate | Revision Log
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/ui/webui/extensions/extension_settings_handler.h" 5 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/base64.h" 8 #include "base/base64.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 source->AddString("extensionSettingsCrashMessage", 338 source->AddString("extensionSettingsCrashMessage",
339 l10n_util::GetStringUTF16(IDS_EXTENSIONS_CRASHED_EXTENSION)); 339 l10n_util::GetStringUTF16(IDS_EXTENSIONS_CRASHED_EXTENSION));
340 source->AddString("extensionSettingsInDevelopment", 340 source->AddString("extensionSettingsInDevelopment",
341 l10n_util::GetStringUTF16(IDS_EXTENSIONS_IN_DEVELOPMENT)); 341 l10n_util::GetStringUTF16(IDS_EXTENSIONS_IN_DEVELOPMENT));
342 source->AddString("extensionSettingsWarningsTitle", 342 source->AddString("extensionSettingsWarningsTitle",
343 l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_TITLE)); 343 l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_TITLE));
344 source->AddString("extensionSettingsShowDetails", 344 source->AddString("extensionSettingsShowDetails",
345 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_DETAILS)); 345 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_DETAILS));
346 source->AddString("extensionSettingsHideDetails", 346 source->AddString("extensionSettingsHideDetails",
347 l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_DETAILS)); 347 l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_DETAILS));
348 source->AddString("unlockButton",
349 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNLOCK_BUTTON));
350 source->AddString("lockButton",
351 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOCK_BUTTON));
348 352
349 // TODO(estade): comb through the above strings to find ones no longer used in 353 // TODO(estade): comb through the above strings to find ones no longer used in
350 // uber extensions. 354 // uber extensions.
351 source->AddString("extensionUninstall", 355 source->AddString("extensionUninstall",
352 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL)); 356 l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL));
353 } 357 }
354 358
355 void ExtensionSettingsHandler::NavigateToPendingEntry(const GURL& url, 359 void ExtensionSettingsHandler::NavigateToPendingEntry(const GURL& url,
356 content::NavigationController::ReloadType reload_type) { 360 content::NavigationController::ReloadType reload_type) {
357 if (reload_type != content::NavigationController::NO_RELOAD) 361 if (reload_type != content::NavigationController::NO_RELOAD)
358 ReloadUnpackedExtensions(); 362 ReloadUnpackedExtensions();
359 } 363 }
360 364
361 void ExtensionSettingsHandler::RegisterMessages() { 365 void ExtensionSettingsHandler::RegisterMessages() {
362 // Don't override an |extension_service_| or |management_policy_| injected 366 // Don't override an |extension_service_| or |management_policy_| injected
363 // for testing. 367 // for testing.
364 if (!extension_service_) { 368 if (!extension_service_) {
365 extension_service_ = Profile::FromWebUI(web_ui())->GetOriginalProfile()-> 369 extension_service_ = Profile::FromWebUI(web_ui())->GetOriginalProfile()->
366 GetExtensionService(); 370 GetExtensionService();
367 } 371 }
368 if (!management_policy_) { 372 if (!management_policy_) {
369 management_policy_ = extensions::ExtensionSystem::Get( 373 management_policy_ = extensions::ExtensionSystem::Get(
370 extension_service_->profile())->management_policy(); 374 extension_service_->profile())->management_policy();
371 } 375 }
372 376
377 web_ui()->RegisterMessageCallback("setElevated",
378 base::Bind(&ExtensionSettingsHandler::ManagedUserSetElevated,
379 base::Unretained(this)));
373 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", 380 web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData",
374 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, 381 base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData,
375 base::Unretained(this))); 382 base::Unretained(this)));
376 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode", 383 web_ui()->RegisterMessageCallback("extensionSettingsToggleDeveloperMode",
377 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode, 384 base::Bind(&ExtensionSettingsHandler::HandleToggleDeveloperMode,
378 base::Unretained(this))); 385 base::Unretained(this)));
379 web_ui()->RegisterMessageCallback("extensionSettingsInspect", 386 web_ui()->RegisterMessageCallback("extensionSettingsInspect",
380 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, 387 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage,
381 base::Unretained(this))); 388 base::Unretained(this)));
382 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", 389 web_ui()->RegisterMessageCallback("extensionSettingsLaunch",
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 if ((*extension)->location() == Manifest::LOAD) 537 if ((*extension)->location() == Manifest::LOAD)
531 unpacked_extensions.push_back(*extension); 538 unpacked_extensions.push_back(*extension);
532 } 539 }
533 540
534 for (std::vector<const Extension*>::iterator iter = 541 for (std::vector<const Extension*>::iterator iter =
535 unpacked_extensions.begin(); iter != unpacked_extensions.end(); ++iter) { 542 unpacked_extensions.begin(); iter != unpacked_extensions.end(); ++iter) {
536 extension_service_->ReloadExtension((*iter)->id()); 543 extension_service_->ReloadExtension((*iter)->id());
537 } 544 }
538 } 545 }
539 546
547 void ExtensionSettingsHandler::ManagedUserSetElevated(const ListValue* args) {
548 ManagedUserService* service = ManagedUserServiceFactory::GetForProfile(
549 Profile::FromWebUI(web_ui()));
550 bool elevated;
551 args->GetBoolean(0, &elevated);
not at google - send to devlin 2013/02/21 16:25:24 CHECK(args->GetBoolean(..))
Adrian Kuegel 2013/02/21 16:39:00 Done.
Bernhard Bauer 2013/02/21 17:35:40 Do we really want a CHECK for untrusted input? It
not at google - send to devlin 2013/02/21 17:37:18 it's chrome.send, that's not untrusted.
552 // TODO(akuegel): Show the managed user passphrase dialog for authentication
553 // if elevated should be set to true.
554 service->SetElevated(elevated);
555 HandleRequestExtensionsData(NULL);
556 }
557
540 void ExtensionSettingsHandler::HandleRequestExtensionsData( 558 void ExtensionSettingsHandler::HandleRequestExtensionsData(
541 const ListValue* args) { 559 const ListValue* args) {
542 DictionaryValue results; 560 DictionaryValue results;
543 561
544 Profile* profile = Profile::FromWebUI(web_ui()); 562 Profile* profile = Profile::FromWebUI(web_ui());
545 563
546 // Add the extensions to the results structure. 564 // Add the extensions to the results structure.
547 ListValue *extensions_list = new ListValue(); 565 ListValue *extensions_list = new ListValue();
548 566
549 extensions::ExtensionWarningService* warnings = 567 extensions::ExtensionWarningService* warnings =
(...skipping 25 matching lines...) Expand all
575 extension != extensions->end(); ++extension) { 593 extension != extensions->end(); ++extension) {
576 if ((*extension)->ShouldDisplayInExtensionSettings()) { 594 if ((*extension)->ShouldDisplayInExtensionSettings()) {
577 extensions_list->Append(CreateExtensionDetailValue( 595 extensions_list->Append(CreateExtensionDetailValue(
578 *extension, 596 *extension,
579 empty_pages, // Terminated process has no active pages. 597 empty_pages, // Terminated process has no active pages.
580 warnings)); 598 warnings));
581 } 599 }
582 } 600 }
583 results.Set("extensions", extensions_list); 601 results.Set("extensions", extensions_list);
584 602
585 bool is_managed = 603 ManagedUserService* service =
586 ManagedUserServiceFactory::GetForProfile(profile)->ProfileIsManaged(); 604 ManagedUserServiceFactory::GetForProfile(profile);
605
606 bool is_managed = service->ProfileIsManaged();
607 bool is_elevated = service->IsElevated();
587 bool developer_mode = 608 bool developer_mode =
588 !is_managed && 609 (!is_managed || is_elevated) &&
589 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); 610 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode);
590 results.SetBoolean("profileIsManaged", is_managed); 611 results.SetBoolean("profileIsManaged", is_managed);
612 results.SetBoolean("profileIsElevated", service->IsElevated());
591 results.SetBoolean("developerMode", developer_mode); 613 results.SetBoolean("developerMode", developer_mode);
592 614
593 // Check to see if we have any wiped out extensions. 615 // Check to see if we have any wiped out extensions.
594 ExtensionService* extension_service = 616 ExtensionService* extension_service =
595 extensions::ExtensionSystem::Get(profile)->extension_service(); 617 extensions::ExtensionSystem::Get(profile)->extension_service();
596 scoped_ptr<const ExtensionSet> wiped_out( 618 scoped_ptr<const ExtensionSet> wiped_out(
597 extension_service->GetWipedOutExtensions()); 619 extension_service->GetWipedOutExtensions());
598 results.SetBoolean("showDisabledExtensionsWarning", wiped_out->size() > 0); 620 results.SetBoolean("showDisabledExtensionsWarning", wiped_out->size() > 0);
599 621
600 bool load_unpacked_disabled = 622 bool load_unpacked_disabled =
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 std::vector<std::string> requirement_errors) { 1056 std::vector<std::string> requirement_errors) {
1035 if (requirement_errors.empty()) { 1057 if (requirement_errors.empty()) {
1036 extension_service_->EnableExtension(extension_id); 1058 extension_service_->EnableExtension(extension_id);
1037 } else { 1059 } else {
1038 ExtensionErrorReporter::GetInstance()->ReportError( 1060 ExtensionErrorReporter::GetInstance()->ReportError(
1039 UTF8ToUTF16(JoinString(requirement_errors, ' ')), 1061 UTF8ToUTF16(JoinString(requirement_errors, ' ')),
1040 true /* be noisy */); 1062 true /* be noisy */);
1041 } 1063 }
1042 requirements_checker_.reset(); 1064 requirements_checker_.reset();
1043 } 1065 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698