Chromium Code Reviews| 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 |