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 |