Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: chrome/browser/extensions/extension_install_prompt.cc

Issue 1004123003: Extensions: Switch to new permission message system, part III (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_tests
Patch Set: Mac Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/extensions/extension_install_prompt.h" 5 #include "chrome/browser/extensions/extension_install_prompt.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 19 matching lines...) Expand all
30 #include "extensions/browser/install/extension_install_ui.h" 30 #include "extensions/browser/install/extension_install_ui.h"
31 #include "extensions/common/constants.h" 31 #include "extensions/common/constants.h"
32 #include "extensions/common/extension.h" 32 #include "extensions/common/extension.h"
33 #include "extensions/common/extension_icon_set.h" 33 #include "extensions/common/extension_icon_set.h"
34 #include "extensions/common/extension_resource.h" 34 #include "extensions/common/extension_resource.h"
35 #include "extensions/common/feature_switch.h" 35 #include "extensions/common/feature_switch.h"
36 #include "extensions/common/manifest.h" 36 #include "extensions/common/manifest.h"
37 #include "extensions/common/manifest_constants.h" 37 #include "extensions/common/manifest_constants.h"
38 #include "extensions/common/manifest_handlers/icons_handler.h" 38 #include "extensions/common/manifest_handlers/icons_handler.h"
39 #include "extensions/common/manifest_handlers/permissions_parser.h" 39 #include "extensions/common/manifest_handlers/permissions_parser.h"
40 #include "extensions/common/permissions/permission_message_provider.h"
41 #include "extensions/common/permissions/permission_set.h" 40 #include "extensions/common/permissions/permission_set.h"
42 #include "extensions/common/permissions/permissions_data.h" 41 #include "extensions/common/permissions/permissions_data.h"
43 #include "extensions/common/url_pattern.h" 42 #include "extensions/common/url_pattern.h"
44 #include "grit/theme_resources.h" 43 #include "grit/theme_resources.h"
45 #include "ui/base/l10n/l10n_util.h" 44 #include "ui/base/l10n/l10n_util.h"
46 #include "ui/base/resource/resource_bundle.h" 45 #include "ui/base/resource/resource_bundle.h"
47 #include "ui/base/ui_base_types.h" 46 #include "ui/base/ui_base_types.h"
48 #include "ui/gfx/image/image.h" 47 #include "ui/gfx/image/image.h"
49 48
50 using extensions::BundleInstaller; 49 using extensions::BundleInstaller;
51 using extensions::Extension; 50 using extensions::Extension;
52 using extensions::Manifest; 51 using extensions::Manifest;
52 using extensions::PermissionMessageString;
53 using extensions::PermissionMessageStrings;
53 using extensions::PermissionSet; 54 using extensions::PermissionSet;
54 55
55 namespace { 56 namespace {
56 57
57 bool AllowWebstoreData(ExtensionInstallPrompt::PromptType type) { 58 bool AllowWebstoreData(ExtensionInstallPrompt::PromptType type) {
58 return type == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT || 59 return type == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT ||
59 type == ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT || 60 type == ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT ||
60 type == ExtensionInstallPrompt::REPAIR_PROMPT; 61 type == ExtensionInstallPrompt::REPAIR_PROMPT;
61 } 62 }
62 63
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 average_rating_(0.0), 243 average_rating_(0.0),
243 rating_count_(0), 244 rating_count_(0),
244 show_user_count_(false), 245 show_user_count_(false),
245 has_webstore_data_(false) { 246 has_webstore_data_(false) {
246 } 247 }
247 248
248 ExtensionInstallPrompt::Prompt::~Prompt() { 249 ExtensionInstallPrompt::Prompt::~Prompt() {
249 } 250 }
250 251
251 void ExtensionInstallPrompt::Prompt::SetPermissions( 252 void ExtensionInstallPrompt::Prompt::SetPermissions(
252 const std::vector<base::string16>& permissions, 253 const PermissionMessageStrings& permissions,
253 PermissionsType permissions_type) {
254 GetPermissionsForType(permissions_type).permissions = permissions;
255 }
256
257 void ExtensionInstallPrompt::Prompt::SetPermissionsDetails(
258 const std::vector<base::string16>& details,
259 PermissionsType permissions_type) { 254 PermissionsType permissions_type) {
260 InstallPromptPermissions& install_permissions = 255 InstallPromptPermissions& install_permissions =
261 GetPermissionsForType(permissions_type); 256 GetPermissionsForType(permissions_type);
262 257
263 // Add a dash to the front of each permission detail. 258 install_permissions.permissions.clear();
264 for (const auto& details_entry : details) { 259 install_permissions.details.clear();
265 if (!details_entry.empty()) { 260 install_permissions.is_showing_details.clear();
266 std::vector<base::string16> detail_lines;
267 base::SplitString(details_entry, base::char16('\n'), &detail_lines);
268 261
262 for (const PermissionMessageString& str : permissions) {
263 install_permissions.permissions.push_back(str.message);
264 // Add a dash to the front of each permission detail.
265 base::string16 details;
266 if (!str.submessages.empty()) {
269 std::vector<base::string16> detail_lines_with_bullets; 267 std::vector<base::string16> detail_lines_with_bullets;
270 for (const auto& detail_line : detail_lines) 268 for (const auto& detail_line : str.submessages) {
271 detail_lines_with_bullets.push_back(base::ASCIIToUTF16("- ") + 269 detail_lines_with_bullets.push_back(base::ASCIIToUTF16("- ") +
272 detail_line); 270 detail_line);
271 }
273 272
274 install_permissions.details.push_back( 273 details = JoinString(detail_lines_with_bullets, '\n');
275 JoinString(detail_lines_with_bullets, '\n'));
276 } else {
277 install_permissions.details.push_back(details_entry);
278 } 274 }
275 install_permissions.details.push_back(details);
276 install_permissions.is_showing_details.push_back(false);
279 } 277 }
280
281 install_permissions.is_showing_details.clear();
282 install_permissions.is_showing_details.insert(
283 install_permissions.is_showing_details.begin(), details.size(), false);
284 } 278 }
285 279
286 void ExtensionInstallPrompt::Prompt::SetIsShowingDetails( 280 void ExtensionInstallPrompt::Prompt::SetIsShowingDetails(
287 DetailsType type, 281 DetailsType type,
288 size_t index, 282 size_t index,
289 bool is_showing_details) { 283 bool is_showing_details) {
290 switch (type) { 284 switch (type) {
291 case PERMISSIONS_DETAILS: 285 case PERMISSIONS_DETAILS:
292 prompt_permissions_.is_showing_details[index] = is_showing_details; 286 prompt_permissions_.is_showing_details[index] = is_showing_details;
293 break; 287 break;
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 } 915 }
922 916
923 if (permissions_to_display.get() && 917 if (permissions_to_display.get() &&
924 (!extension_ || 918 (!extension_ ||
925 !extensions::PermissionsData::ShouldSkipPermissionWarnings( 919 !extensions::PermissionsData::ShouldSkipPermissionWarnings(
926 extension_->id()))) { 920 extension_->id()))) {
927 Manifest::Type type = 921 Manifest::Type type =
928 extension_ ? extension_->GetType() : Manifest::TYPE_UNKNOWN; 922 extension_ ? extension_->GetType() : Manifest::TYPE_UNKNOWN;
929 const extensions::PermissionMessageProvider* message_provider = 923 const extensions::PermissionMessageProvider* message_provider =
930 extensions::PermissionMessageProvider::Get(); 924 extensions::PermissionMessageProvider::Get();
931 prompt_->SetPermissions(message_provider->GetLegacyWarningMessages( 925
926 prompt_->SetPermissions(message_provider->GetPermissionMessageStrings(
932 permissions_to_display.get(), type), 927 permissions_to_display.get(), type),
933 REGULAR_PERMISSIONS); 928 REGULAR_PERMISSIONS);
934 prompt_->SetPermissionsDetails(
935 message_provider->GetLegacyWarningMessagesDetails(
936 permissions_to_display.get(), type),
937 REGULAR_PERMISSIONS);
938 929
939 scoped_refptr<const extensions::PermissionSet> withheld = 930 scoped_refptr<const extensions::PermissionSet> withheld =
940 extension_->permissions_data()->withheld_permissions(); 931 extension_->permissions_data()->withheld_permissions();
941 if (!withheld->IsEmpty()) { 932 if (!withheld->IsEmpty()) {
942 prompt_->SetPermissions( 933 prompt_->SetPermissions(
943 message_provider->GetLegacyWarningMessages(withheld.get(), type), 934 message_provider->GetPermissionMessageStrings(withheld.get(), type),
944 PermissionsType::WITHHELD_PERMISSIONS);
945 prompt_->SetPermissionsDetails(
946 message_provider->GetLegacyWarningMessagesDetails(withheld.get(),
947 type),
948 PermissionsType::WITHHELD_PERMISSIONS); 935 PermissionsType::WITHHELD_PERMISSIONS);
949 } 936 }
950 } 937 }
951 938
952 switch (prompt_->type()) { 939 switch (prompt_->type()) {
953 case PERMISSIONS_PROMPT: 940 case PERMISSIONS_PROMPT:
954 case RE_ENABLE_PROMPT: 941 case RE_ENABLE_PROMPT:
955 case INLINE_INSTALL_PROMPT: 942 case INLINE_INSTALL_PROMPT:
956 case EXTERNAL_INSTALL_PROMPT: 943 case EXTERNAL_INSTALL_PROMPT:
957 case INSTALL_PROMPT: 944 case INSTALL_PROMPT:
(...skipping 24 matching lines...) Expand all
982 if (show_params_->WasParentDestroyed()) { 969 if (show_params_->WasParentDestroyed()) {
983 delegate_->InstallUIAbort(false); 970 delegate_->InstallUIAbort(false);
984 return; 971 return;
985 } 972 }
986 973
987 if (show_dialog_callback_.is_null()) 974 if (show_dialog_callback_.is_null())
988 GetDefaultShowDialogCallback().Run(show_params_.get(), delegate_, prompt_); 975 GetDefaultShowDialogCallback().Run(show_params_.get(), delegate_, prompt_);
989 else 976 else
990 show_dialog_callback_.Run(show_params_.get(), delegate_, prompt_); 977 show_dialog_callback_.Run(show_params_.get(), delegate_, prompt_);
991 } 978 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698