OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |