| 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 using base::DictionaryValue; | 106 using base::DictionaryValue; |
| 107 using base::ListValue; | 107 using base::ListValue; |
| 108 using content::RenderViewHost; | 108 using content::RenderViewHost; |
| 109 using content::WebContents; | 109 using content::WebContents; |
| 110 | 110 |
| 111 namespace { | 111 namespace { |
| 112 | 112 |
| 113 const char kAppsDeveloperToolsExtensionId[] = | 113 const char kAppsDeveloperToolsExtensionId[] = |
| 114 "ohmmkhmmmpcnpikjeljgnaoabkaalbgc"; | 114 "ohmmkhmmmpcnpikjeljgnaoabkaalbgc"; |
| 115 | 115 |
| 116 // Returns true if the extensions page should display the new-style extension | |
| 117 // info dialog. If false, display the old permissions dialog. | |
| 118 bool ShouldDisplayExtensionInfoDialog() { | |
| 119 #if defined(OS_MACOSX) | |
| 120 return false; | |
| 121 #else | |
| 122 return true; | |
| 123 #endif | |
| 124 } | |
| 125 | |
| 126 } // namespace | 116 } // namespace |
| 127 | 117 |
| 128 namespace extensions { | 118 namespace extensions { |
| 129 | 119 |
| 130 ExtensionPage::ExtensionPage(const GURL& url, | 120 ExtensionPage::ExtensionPage(const GURL& url, |
| 131 int render_process_id, | 121 int render_process_id, |
| 132 int render_view_id, | 122 int render_view_id, |
| 133 bool incognito, | 123 bool incognito, |
| 134 bool generated_background_page) | 124 bool generated_background_page) |
| 135 : url(url), | 125 : url(url), |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 Manifest::IsUnpackedLocation(extension->location())); | 298 Manifest::IsUnpackedLocation(extension->location())); |
| 309 extension_data->SetBoolean("is_hosted_app", extension->is_hosted_app()); | 299 extension_data->SetBoolean("is_hosted_app", extension->is_hosted_app()); |
| 310 extension_data->SetBoolean("is_platform_app", extension->is_platform_app()); | 300 extension_data->SetBoolean("is_platform_app", extension->is_platform_app()); |
| 311 extension_data->SetBoolean("homepageProvided", | 301 extension_data->SetBoolean("homepageProvided", |
| 312 ManifestURL::SpecifiedHomepageURL(extension)); | 302 ManifestURL::SpecifiedHomepageURL(extension)); |
| 313 extension_data->SetBoolean("optionsOpenInTab", | 303 extension_data->SetBoolean("optionsOpenInTab", |
| 314 OptionsPageInfo::ShouldOpenInTab(extension)); | 304 OptionsPageInfo::ShouldOpenInTab(extension)); |
| 315 extension_data->SetString("optionsPageHref", | 305 extension_data->SetString("optionsPageHref", |
| 316 OptionsPageInfo::GetOptionsPage(extension).spec()); | 306 OptionsPageInfo::GetOptionsPage(extension).spec()); |
| 317 extension_data->SetBoolean("enableExtensionInfoDialog", | 307 extension_data->SetBoolean("enableExtensionInfoDialog", |
| 318 ShouldDisplayExtensionInfoDialog()); | 308 CanShowAppInfoDialog()); |
| 319 | 309 |
| 320 // Add dependent extensions. | 310 // Add dependent extensions. |
| 321 base::ListValue* dependents_list = new base::ListValue; | 311 base::ListValue* dependents_list = new base::ListValue; |
| 322 if (extension->is_shared_module()) { | 312 if (extension->is_shared_module()) { |
| 323 scoped_ptr<ExtensionSet> dependent_extensions = | 313 scoped_ptr<ExtensionSet> dependent_extensions = |
| 324 extension_service_->shared_module_service()->GetDependentExtensions( | 314 extension_service_->shared_module_service()->GetDependentExtensions( |
| 325 extension); | 315 extension); |
| 326 for (ExtensionSet::const_iterator i = dependent_extensions->begin(); | 316 for (ExtensionSet::const_iterator i = dependent_extensions->begin(); |
| 327 i != dependent_extensions->end(); | 317 i != dependent_extensions->end(); |
| 328 i++) { | 318 i++) { |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 565 source->AddString("extensionSettingsReloadTerminated", | 555 source->AddString("extensionSettingsReloadTerminated", |
| 566 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_TERMINATED)); | 556 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_TERMINATED)); |
| 567 source->AddString("extensionSettingsRepairCorrupted", | 557 source->AddString("extensionSettingsRepairCorrupted", |
| 568 l10n_util::GetStringUTF16(IDS_EXTENSIONS_REPAIR_CORRUPTED)); | 558 l10n_util::GetStringUTF16(IDS_EXTENSIONS_REPAIR_CORRUPTED)); |
| 569 source->AddString("extensionSettingsLaunch", | 559 source->AddString("extensionSettingsLaunch", |
| 570 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LAUNCH)); | 560 l10n_util::GetStringUTF16(IDS_EXTENSIONS_LAUNCH)); |
| 571 source->AddString("extensionSettingsReloadUnpacked", | 561 source->AddString("extensionSettingsReloadUnpacked", |
| 572 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_UNPACKED)); | 562 l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_UNPACKED)); |
| 573 source->AddString("extensionSettingsOptions", | 563 source->AddString("extensionSettingsOptions", |
| 574 l10n_util::GetStringUTF16(IDS_EXTENSIONS_OPTIONS_LINK)); | 564 l10n_util::GetStringUTF16(IDS_EXTENSIONS_OPTIONS_LINK)); |
| 575 if (ShouldDisplayExtensionInfoDialog()) { | 565 if (CanShowAppInfoDialog()) { |
| 576 source->AddString("extensionSettingsPermissions", | 566 source->AddString("extensionSettingsPermissions", |
| 577 l10n_util::GetStringUTF16(IDS_EXTENSIONS_INFO_LINK)); | 567 l10n_util::GetStringUTF16(IDS_EXTENSIONS_INFO_LINK)); |
| 578 } else { | 568 } else { |
| 579 source->AddString( | 569 source->AddString( |
| 580 "extensionSettingsPermissions", | 570 "extensionSettingsPermissions", |
| 581 l10n_util::GetStringUTF16(IDS_EXTENSIONS_PERMISSIONS_LINK)); | 571 l10n_util::GetStringUTF16(IDS_EXTENSIONS_PERMISSIONS_LINK)); |
| 582 } | 572 } |
| 583 source->AddString("extensionSettingsVisitWebsite", | 573 source->AddString("extensionSettingsVisitWebsite", |
| 584 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSITE)); | 574 l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSITE)); |
| 585 source->AddString("extensionSettingsVisitWebStore", | 575 source->AddString("extensionSettingsVisitWebStore", |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 | 1224 |
| 1235 if (!extension_id_prompting_.empty()) | 1225 if (!extension_id_prompting_.empty()) |
| 1236 return; // Only one prompt at a time. | 1226 return; // Only one prompt at a time. |
| 1237 extension_id_prompting_ = extension->id(); | 1227 extension_id_prompting_ = extension->id(); |
| 1238 | 1228 |
| 1239 // The BrokerDelegate manages its own lifetime. | 1229 // The BrokerDelegate manages its own lifetime. |
| 1240 BrokerDelegate* broker_delegate = new BrokerDelegate(AsWeakPtr()); | 1230 BrokerDelegate* broker_delegate = new BrokerDelegate(AsWeakPtr()); |
| 1241 | 1231 |
| 1242 // Show the new-style extensions dialog when the flag is set. The flag cannot | 1232 // Show the new-style extensions dialog when the flag is set. The flag cannot |
| 1243 // be set on Mac platforms. | 1233 // be set on Mac platforms. |
| 1244 if (ShouldDisplayExtensionInfoDialog()) { | 1234 if (CanShowAppInfoDialog()) { |
| 1245 UMA_HISTOGRAM_ENUMERATION("Apps.AppInfoDialog.Launches", | 1235 UMA_HISTOGRAM_ENUMERATION("Apps.AppInfoDialog.Launches", |
| 1246 AppInfoLaunchSource::FROM_EXTENSIONS_PAGE, | 1236 AppInfoLaunchSource::FROM_EXTENSIONS_PAGE, |
| 1247 AppInfoLaunchSource::NUM_LAUNCH_SOURCES); | 1237 AppInfoLaunchSource::NUM_LAUNCH_SOURCES); |
| 1248 | 1238 |
| 1249 // Display the dialog at a size similar to the app list. | 1239 // Display the dialog at a size similar to the app list. |
| 1250 const int kAppInfoDialogWidth = 380; | |
| 1251 const int kAppInfoDialogHeight = 490; | |
| 1252 | |
| 1253 ShowAppInfoInNativeDialog( | 1240 ShowAppInfoInNativeDialog( |
| 1254 web_contents()->GetTopLevelNativeWindow(), | 1241 web_contents()->GetTopLevelNativeWindow(), |
| 1255 gfx::Size(kAppInfoDialogWidth, kAppInfoDialogHeight), | 1242 GetAppInfoNativeDialogSize(), |
| 1256 Profile::FromWebUI(web_ui()), extension, | 1243 Profile::FromWebUI(web_ui()), extension, |
| 1257 base::Bind(&BrokerDelegate::AppInfoDialogClosed, | 1244 base::Bind(&BrokerDelegate::AppInfoDialogClosed, |
| 1258 base::Unretained(broker_delegate))); | 1245 base::Unretained(broker_delegate))); |
| 1259 } else { | 1246 } else { |
| 1260 prompt_.reset(new ExtensionInstallPrompt(web_contents())); | 1247 prompt_.reset(new ExtensionInstallPrompt(web_contents())); |
| 1261 std::vector<base::FilePath> retained_file_paths; | 1248 std::vector<base::FilePath> retained_file_paths; |
| 1262 if (extension->permissions_data()->HasAPIPermission( | 1249 if (extension->permissions_data()->HasAPIPermission( |
| 1263 APIPermission::kFileSystem)) { | 1250 APIPermission::kFileSystem)) { |
| 1264 std::vector<apps::SavedFileEntry> retained_file_entries = | 1251 std::vector<apps::SavedFileEntry> retained_file_entries = |
| 1265 apps::SavedFilesService::Get(Profile::FromWebUI(web_ui())) | 1252 apps::SavedFilesService::Get(Profile::FromWebUI(web_ui())) |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1531 extension_service_->EnableExtension(extension_id); | 1518 extension_service_->EnableExtension(extension_id); |
| 1532 } else { | 1519 } else { |
| 1533 ExtensionErrorReporter::GetInstance()->ReportError( | 1520 ExtensionErrorReporter::GetInstance()->ReportError( |
| 1534 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), | 1521 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), |
| 1535 true); // Be noisy. | 1522 true); // Be noisy. |
| 1536 } | 1523 } |
| 1537 requirements_checker_.reset(); | 1524 requirements_checker_.reset(); |
| 1538 } | 1525 } |
| 1539 | 1526 |
| 1540 } // namespace extensions | 1527 } // namespace extensions |
| OLD | NEW |