| 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 "apps/app_load_service.h" | 7 #include "apps/app_load_service.h" |
| 8 #include "apps/saved_files_service.h" | 8 #include "apps/saved_files_service.h" |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "chrome/browser/extensions/extension_error_reporter.h" | 33 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 34 #include "chrome/browser/extensions/extension_management.h" | 34 #include "chrome/browser/extensions/extension_management.h" |
| 35 #include "chrome/browser/extensions/extension_service.h" | 35 #include "chrome/browser/extensions/extension_service.h" |
| 36 #include "chrome/browser/extensions/extension_tab_util.h" | 36 #include "chrome/browser/extensions/extension_tab_util.h" |
| 37 #include "chrome/browser/extensions/extension_ui_util.h" | 37 #include "chrome/browser/extensions/extension_ui_util.h" |
| 38 #include "chrome/browser/extensions/extension_util.h" | 38 #include "chrome/browser/extensions/extension_util.h" |
| 39 #include "chrome/browser/extensions/install_verifier.h" | 39 #include "chrome/browser/extensions/install_verifier.h" |
| 40 #include "chrome/browser/extensions/path_util.h" | 40 #include "chrome/browser/extensions/path_util.h" |
| 41 #include "chrome/browser/extensions/shared_module_service.h" | 41 #include "chrome/browser/extensions/shared_module_service.h" |
| 42 #include "chrome/browser/extensions/updater/extension_updater.h" | 42 #include "chrome/browser/extensions/updater/extension_updater.h" |
| 43 #include "chrome/browser/extensions/webstore_reinstaller.h" |
| 43 #include "chrome/browser/platform_util.h" | 44 #include "chrome/browser/platform_util.h" |
| 44 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 45 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
| 45 #include "chrome/browser/profiles/profile.h" | 46 #include "chrome/browser/profiles/profile.h" |
| 46 #include "chrome/browser/supervised_user/supervised_user_service.h" | 47 #include "chrome/browser/supervised_user/supervised_user_service.h" |
| 47 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 48 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
| 48 #include "chrome/browser/tab_contents/background_contents.h" | 49 #include "chrome/browser/tab_contents/background_contents.h" |
| 49 #include "chrome/browser/ui/browser.h" | 50 #include "chrome/browser/ui/browser.h" |
| 50 #include "chrome/browser/ui/browser_finder.h" | 51 #include "chrome/browser/ui/browser_finder.h" |
| 51 #include "chrome/browser/ui/browser_window.h" | 52 #include "chrome/browser/ui/browser_window.h" |
| 52 #include "chrome/browser/ui/extensions/application_launch.h" | 53 #include "chrome/browser/ui/extensions/application_launch.h" |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 !enabled, NULL); | 249 !enabled, NULL); |
| 249 if (Manifest::IsUnpackedLocation(extension->location())) { | 250 if (Manifest::IsUnpackedLocation(extension->location())) { |
| 250 extension_data->SetString("path", extension->path().value()); | 251 extension_data->SetString("path", extension->path().value()); |
| 251 extension_data->SetString( | 252 extension_data->SetString( |
| 252 "prettifiedPath", | 253 "prettifiedPath", |
| 253 extensions::path_util::PrettifyPath(extension->path()).value()); | 254 extensions::path_util::PrettifyPath(extension->path()).value()); |
| 254 } | 255 } |
| 255 extension_data->SetString("icon", icon.spec()); | 256 extension_data->SetString("icon", icon.spec()); |
| 256 extension_data->SetBoolean("isUnpacked", | 257 extension_data->SetBoolean("isUnpacked", |
| 257 Manifest::IsUnpackedLocation(extension->location())); | 258 Manifest::IsUnpackedLocation(extension->location())); |
| 259 extension_data->SetBoolean("isFromStore", |
| 260 extension->location() == Manifest::INTERNAL && |
| 261 ManifestURL::UpdatesFromGallery(extension)); |
| 258 ExtensionRegistry* registry = | 262 ExtensionRegistry* registry = |
| 259 ExtensionRegistry::Get(extension_service_->profile()); | 263 ExtensionRegistry::Get(extension_service_->profile()); |
| 260 extension_data->SetBoolean( | 264 extension_data->SetBoolean( |
| 261 "terminated", | 265 "terminated", |
| 262 registry->terminated_extensions().Contains(extension->id())); | 266 registry->terminated_extensions().Contains(extension->id())); |
| 263 extension_data->SetBoolean("enabledIncognito", | 267 extension_data->SetBoolean("enabledIncognito", |
| 264 util::IsIncognitoEnabled(extension->id(), extension_service_->profile())); | 268 util::IsIncognitoEnabled(extension->id(), extension_service_->profile())); |
| 265 extension_data->SetBoolean("incognitoCanBeEnabled", | 269 extension_data->SetBoolean("incognitoCanBeEnabled", |
| 266 extension->can_be_incognito_enabled()); | 270 extension->can_be_incognito_enabled()); |
| 267 extension_data->SetBoolean("wantsFileAccess", extension->wants_file_access()); | 271 extension_data->SetBoolean("wantsFileAccess", extension->wants_file_access()); |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 source->AddString("extensionSettingsEnableErrorCollection", | 510 source->AddString("extensionSettingsEnableErrorCollection", |
| 507 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ENABLE_ERROR_COLLECTION)); | 511 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ENABLE_ERROR_COLLECTION)); |
| 508 source->AddString("extensionSettingsAllowFileAccess", | 512 source->AddString("extensionSettingsAllowFileAccess", |
| 509 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ALLOW_FILE_ACCESS)); | 513 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ALLOW_FILE_ACCESS)); |
| 510 source->AddString("extensionSettingsAllowOnAllUrls", | 514 source->AddString("extensionSettingsAllowOnAllUrls", |
| 511 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ALLOW_ON_ALL_URLS)); | 515 l10n_util::GetStringUTF16(IDS_EXTENSIONS_ALLOW_ON_ALL_URLS)); |
| 512 source->AddString("extensionSettingsIncognitoWarning", | 516 source->AddString("extensionSettingsIncognitoWarning", |
| 513 l10n_util::GetStringUTF16(IDS_EXTENSIONS_INCOGNITO_WARNING)); | 517 l10n_util::GetStringUTF16(IDS_EXTENSIONS_INCOGNITO_WARNING)); |
| 514 source->AddString("extensionSettingsReloadTerminated", | 518 source->AddString("extensionSettingsReloadTerminated", |
| 515 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_TERMINATED)); | 519 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_TERMINATED)); |
| 520 source->AddString("extensionSettingsRepairCorrupted", |
| 521 l10n_util::GetStringUTF16(IDS_EXTENSIONS_REPAIR_CORRUPTED)); |
| 516 source->AddString("extensionSettingsLaunch", | 522 source->AddString("extensionSettingsLaunch", |
| 517 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LAUNCH)); | 523 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LAUNCH)); |
| 518 source->AddString("extensionSettingsReloadUnpacked", | 524 source->AddString("extensionSettingsReloadUnpacked", |
| 519 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_UNPACKED)); | 525 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_UNPACKED)); |
| 520 source->AddString("extensionSettingsOptions", | 526 source->AddString("extensionSettingsOptions", |
| 521 l10n_util::GetStringUTF16(IDS_EXTENSIONS_OPTIONS_LINK)); | 527 l10n_util::GetStringUTF16(IDS_EXTENSIONS_OPTIONS_LINK)); |
| 522 source->AddString("extensionSettingsPermissions", | 528 source->AddString("extensionSettingsPermissions", |
| 523 l10n_util::GetStringUTF16(IDS_EXTENSIONS_PERMISSIONS_LINK)); | 529 l10n_util::GetStringUTF16(IDS_EXTENSIONS_PERMISSIONS_LINK)); |
| 524 source->AddString("extensionSettingsVisitWebsite", | 530 source->AddString("extensionSettingsVisitWebsite", |
| 525 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSITE)); | 531 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSITE)); |
| 526 source->AddString("extensionSettingsVisitWebStore", | 532 source->AddString("extensionSettingsVisitWebStore", |
| 527 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSTORE)); | 533 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSTORE)); |
| 528 source->AddString("extensionSettingsPolicyControlled", | 534 source->AddString("extensionSettingsPolicyControlled", |
| 529 l10n_util::GetStringUTF16(IDS_EXTENSIONS_POLICY_CONTROLLED)); | 535 l10n_util::GetStringUTF16(IDS_EXTENSIONS_POLICY_CONTROLLED)); |
| 530 source->AddString("extensionSettingsDependentExtensions", | 536 source->AddString("extensionSettingsDependentExtensions", |
| 531 l10n_util::GetStringUTF16(IDS_EXTENSIONS_DEPENDENT_EXTENSIONS)); | 537 l10n_util::GetStringUTF16(IDS_EXTENSIONS_DEPENDENT_EXTENSIONS)); |
| 532 source->AddString("extensionSettingsSupervisedUser", | 538 source->AddString("extensionSettingsSupervisedUser", |
| 533 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOCKED_SUPERVISED_USER)); | 539 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOCKED_SUPERVISED_USER)); |
| 534 source->AddString("extensionSettingsCorruptInstall", | 540 source->AddString("extensionSettingsCorruptInstall", |
| 535 l10n_util::GetStringUTF16( | 541 l10n_util::GetStringUTF16( |
| 536 IDS_EXTENSIONS_CORRUPTED_EXTENSION)); | 542 IDS_EXTENSIONS_CORRUPTED_EXTENSION)); |
| 537 source->AddString("extensionSettingsSuspiciousInstall", | 543 source->AddString("extensionSettingsSuspiciousInstall", |
| 538 l10n_util::GetStringFUTF16( | 544 l10n_util::GetStringFUTF16( |
| 539 IDS_EXTENSIONS_ADDED_WITHOUT_KNOWLEDGE, | 545 IDS_EXTENSIONS_ADDED_WITHOUT_KNOWLEDGE, |
| 540 l10n_util::GetStringUTF16(IDS_EXTENSION_WEB_STORE_TITLE))); | 546 l10n_util::GetStringUTF16(IDS_EXTENSION_WEB_STORE_TITLE))); |
| 541 source->AddString("extensionSettingsLearnMore", | 547 source->AddString("extensionSettingsLearnMore", |
| 542 l10n_util::GetStringUTF16(IDS_LEARN_MORE)); | 548 l10n_util::GetStringUTF16(IDS_LEARN_MORE)); |
| 543 source->AddString("extensionSettingsCorruptInstallHelpUrl", | |
| 544 base::ASCIIToUTF16( | |
| 545 google_util::AppendGoogleLocaleParam( | |
| 546 GURL(chrome::kCorruptExtensionURL), | |
| 547 g_browser_process->GetApplicationLocale()).spec())); | |
| 548 source->AddString("extensionSettingsSuspiciousInstallHelpUrl", | 549 source->AddString("extensionSettingsSuspiciousInstallHelpUrl", |
| 549 base::ASCIIToUTF16( | 550 base::ASCIIToUTF16( |
| 550 google_util::AppendGoogleLocaleParam( | 551 google_util::AppendGoogleLocaleParam( |
| 551 GURL(chrome::kRemoveNonCWSExtensionURL), | 552 GURL(chrome::kRemoveNonCWSExtensionURL), |
| 552 g_browser_process->GetApplicationLocale()).spec())); | 553 g_browser_process->GetApplicationLocale()).spec())); |
| 553 source->AddString("extensionSettingsShowButton", | 554 source->AddString("extensionSettingsShowButton", |
| 554 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_BUTTON)); | 555 l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_BUTTON)); |
| 555 source->AddString("extensionSettingsLoadUnpackedButton", | 556 source->AddString("extensionSettingsLoadUnpackedButton", |
| 556 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOAD_UNPACKED_BUTTON)); | 557 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOAD_UNPACKED_BUTTON)); |
| 557 source->AddString("extensionSettingsPackButton", | 558 source->AddString("extensionSettingsPackButton", |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 AsWeakPtr())); | 628 AsWeakPtr())); |
| 628 web_ui()->RegisterMessageCallback("extensionSettingsInspect", | 629 web_ui()->RegisterMessageCallback("extensionSettingsInspect", |
| 629 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, | 630 base::Bind(&ExtensionSettingsHandler::HandleInspectMessage, |
| 630 AsWeakPtr())); | 631 AsWeakPtr())); |
| 631 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", | 632 web_ui()->RegisterMessageCallback("extensionSettingsLaunch", |
| 632 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, | 633 base::Bind(&ExtensionSettingsHandler::HandleLaunchMessage, |
| 633 AsWeakPtr())); | 634 AsWeakPtr())); |
| 634 web_ui()->RegisterMessageCallback("extensionSettingsReload", | 635 web_ui()->RegisterMessageCallback("extensionSettingsReload", |
| 635 base::Bind(&ExtensionSettingsHandler::HandleReloadMessage, | 636 base::Bind(&ExtensionSettingsHandler::HandleReloadMessage, |
| 636 AsWeakPtr())); | 637 AsWeakPtr())); |
| 638 web_ui()->RegisterMessageCallback("extensionSettingsRepair", |
| 639 base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, |
| 640 AsWeakPtr())); |
| 637 web_ui()->RegisterMessageCallback("extensionSettingsEnable", | 641 web_ui()->RegisterMessageCallback("extensionSettingsEnable", |
| 638 base::Bind(&ExtensionSettingsHandler::HandleEnableMessage, | 642 base::Bind(&ExtensionSettingsHandler::HandleEnableMessage, |
| 639 AsWeakPtr())); | 643 AsWeakPtr())); |
| 640 web_ui()->RegisterMessageCallback("extensionSettingsEnableIncognito", | 644 web_ui()->RegisterMessageCallback("extensionSettingsEnableIncognito", |
| 641 base::Bind(&ExtensionSettingsHandler::HandleEnableIncognitoMessage, | 645 base::Bind(&ExtensionSettingsHandler::HandleEnableIncognitoMessage, |
| 642 AsWeakPtr())); | 646 AsWeakPtr())); |
| 643 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", | 647 web_ui()->RegisterMessageCallback("extensionSettingsEnableErrorCollection", |
| 644 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, | 648 base::Bind(&ExtensionSettingsHandler::HandleEnableErrorCollectionMessage, |
| 645 AsWeakPtr())); | 649 AsWeakPtr())); |
| 646 web_ui()->RegisterMessageCallback("extensionSettingsAllowFileAccess", | 650 web_ui()->RegisterMessageCallback("extensionSettingsAllowFileAccess", |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 NEW_WINDOW)); | 982 NEW_WINDOW)); |
| 979 } | 983 } |
| 980 | 984 |
| 981 void ExtensionSettingsHandler::HandleReloadMessage( | 985 void ExtensionSettingsHandler::HandleReloadMessage( |
| 982 const base::ListValue* args) { | 986 const base::ListValue* args) { |
| 983 std::string extension_id = base::UTF16ToUTF8(ExtractStringValue(args)); | 987 std::string extension_id = base::UTF16ToUTF8(ExtractStringValue(args)); |
| 984 CHECK(!extension_id.empty()); | 988 CHECK(!extension_id.empty()); |
| 985 extension_service_->ReloadExtensionWithQuietFailure(extension_id); | 989 extension_service_->ReloadExtensionWithQuietFailure(extension_id); |
| 986 } | 990 } |
| 987 | 991 |
| 992 void ExtensionSettingsHandler::HandleRepairMessage( |
| 993 const base::ListValue* args) { |
| 994 std::string extension_id = base::UTF16ToUTF8(ExtractStringValue(args)); |
| 995 CHECK(!extension_id.empty()); |
| 996 scoped_refptr<WebstoreReinstaller> reinstaller(new WebstoreReinstaller( |
| 997 web_contents(), |
| 998 extension_id, |
| 999 base::Bind(&ExtensionSettingsHandler::OnReinstallComplete, |
| 1000 AsWeakPtr()))); |
| 1001 reinstaller->BeginReinstall(); |
| 1002 } |
| 1003 |
| 988 void ExtensionSettingsHandler::HandleEnableMessage( | 1004 void ExtensionSettingsHandler::HandleEnableMessage( |
| 989 const base::ListValue* args) { | 1005 const base::ListValue* args) { |
| 990 CHECK_EQ(2U, args->GetSize()); | 1006 CHECK_EQ(2U, args->GetSize()); |
| 991 std::string extension_id, enable_str; | 1007 std::string extension_id, enable_str; |
| 992 CHECK(args->GetString(0, &extension_id)); | 1008 CHECK(args->GetString(0, &extension_id)); |
| 993 CHECK(args->GetString(1, &enable_str)); | 1009 CHECK(args->GetString(1, &enable_str)); |
| 994 | 1010 |
| 995 const Extension* extension = | 1011 const Extension* extension = |
| 996 extension_service_->GetInstalledExtension(extension_id); | 1012 extension_service_->GetInstalledExtension(extension_id); |
| 997 if (!extension) | 1013 if (!extension) |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1403 ExtensionUninstallDialog::Create(extension_service_->profile(), | 1419 ExtensionUninstallDialog::Create(extension_service_->profile(), |
| 1404 browser->window()->GetNativeWindow(), | 1420 browser->window()->GetNativeWindow(), |
| 1405 this)); | 1421 this)); |
| 1406 } | 1422 } |
| 1407 return extension_uninstall_dialog_.get(); | 1423 return extension_uninstall_dialog_.get(); |
| 1408 #else | 1424 #else |
| 1409 return NULL; | 1425 return NULL; |
| 1410 #endif // !defined(OS_ANDROID) | 1426 #endif // !defined(OS_ANDROID) |
| 1411 } | 1427 } |
| 1412 | 1428 |
| 1429 void ExtensionSettingsHandler::OnReinstallComplete( |
| 1430 bool success, |
| 1431 const std::string& error, |
| 1432 webstore_install::Result result) { |
| 1433 MaybeUpdateAfterNotification(); |
| 1434 } |
| 1435 |
| 1413 void ExtensionSettingsHandler::OnRequirementsChecked( | 1436 void ExtensionSettingsHandler::OnRequirementsChecked( |
| 1414 std::string extension_id, | 1437 std::string extension_id, |
| 1415 std::vector<std::string> requirement_errors) { | 1438 std::vector<std::string> requirement_errors) { |
| 1416 if (requirement_errors.empty()) { | 1439 if (requirement_errors.empty()) { |
| 1417 extension_service_->EnableExtension(extension_id); | 1440 extension_service_->EnableExtension(extension_id); |
| 1418 } else { | 1441 } else { |
| 1419 ExtensionErrorReporter::GetInstance()->ReportError( | 1442 ExtensionErrorReporter::GetInstance()->ReportError( |
| 1420 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), | 1443 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), |
| 1421 true); // Be noisy. | 1444 true); // Be noisy. |
| 1422 } | 1445 } |
| 1423 requirements_checker_.reset(); | 1446 requirements_checker_.reset(); |
| 1424 } | 1447 } |
| 1425 | 1448 |
| 1426 } // namespace extensions | 1449 } // namespace extensions |
| OLD | NEW |