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

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

Issue 580363002: Update app info and install prompt UI to show retained devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased to ToT. Created 6 years, 2 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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 REMOTE_INSTALL_PROMPT, 77 REMOTE_INSTALL_PROMPT,
78 REPAIR_PROMPT, 78 REPAIR_PROMPT,
79 NUM_PROMPT_TYPES 79 NUM_PROMPT_TYPES
80 }; 80 };
81 81
82 // Enumeration for permissions and retained files details. 82 // Enumeration for permissions and retained files details.
83 enum DetailsType { 83 enum DetailsType {
84 PERMISSIONS_DETAILS = 0, 84 PERMISSIONS_DETAILS = 0,
85 WITHHELD_PERMISSIONS_DETAILS, 85 WITHHELD_PERMISSIONS_DETAILS,
86 RETAINED_FILES_DETAILS, 86 RETAINED_FILES_DETAILS,
87 RETAINED_DEVICES_DETAILS,
87 }; 88 };
88 89
89 // This enum is used to differentiate regular and withheld permissions for 90 // This enum is used to differentiate regular and withheld permissions for
90 // segregation in the install prompt. 91 // segregation in the install prompt.
91 enum PermissionsType { 92 enum PermissionsType {
92 REGULAR_PERMISSIONS = 0, 93 REGULAR_PERMISSIONS = 0,
93 WITHHELD_PERMISSIONS, 94 WITHHELD_PERMISSIONS,
94 ALL_PERMISSIONS, 95 ALL_PERMISSIONS,
95 }; 96 };
96 97
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 base::string16 GetDialogTitle() const; 129 base::string16 GetDialogTitle() const;
129 base::string16 GetHeading() const; 130 base::string16 GetHeading() const;
130 int GetDialogButtons() const; 131 int GetDialogButtons() const;
131 bool HasAcceptButtonLabel() const; 132 bool HasAcceptButtonLabel() const;
132 base::string16 GetAcceptButtonLabel() const; 133 base::string16 GetAcceptButtonLabel() const;
133 bool HasAbortButtonLabel() const; 134 bool HasAbortButtonLabel() const;
134 base::string16 GetAbortButtonLabel() const; 135 base::string16 GetAbortButtonLabel() const;
135 base::string16 GetPermissionsHeading( 136 base::string16 GetPermissionsHeading(
136 PermissionsType permissions_type) const; 137 PermissionsType permissions_type) const;
137 base::string16 GetRetainedFilesHeading() const; 138 base::string16 GetRetainedFilesHeading() const;
139 base::string16 GetRetainedDevicesHeading() const;
138 140
139 bool ShouldShowPermissions() const; 141 bool ShouldShowPermissions() const;
140 bool ShouldShowExplanationText() const; 142 bool ShouldShowExplanationText() const;
141 143
142 // Getters for webstore metadata. Only populated when the type is 144 // Getters for webstore metadata. Only populated when the type is
143 // INLINE_INSTALL_PROMPT. 145 // INLINE_INSTALL_PROMPT.
144 146
145 // The star display logic replicates the one used by the webstore (from 147 // The star display logic replicates the one used by the webstore (from
146 // components.ratingutils.setFractionalYellowStars). Callers pass in an 148 // components.ratingutils.setFractionalYellowStars). Callers pass in an
147 // "appender", which will be repeatedly called back with the star images 149 // "appender", which will be repeatedly called back with the star images
148 // that they append to the star display area. 150 // that they append to the star display area.
149 typedef void(*StarAppender)(const gfx::ImageSkia*, void*); 151 typedef void(*StarAppender)(const gfx::ImageSkia*, void*);
150 void AppendRatingStars(StarAppender appender, void* data) const; 152 void AppendRatingStars(StarAppender appender, void* data) const;
151 base::string16 GetRatingCount() const; 153 base::string16 GetRatingCount() const;
152 base::string16 GetUserCount() const; 154 base::string16 GetUserCount() const;
153 size_t GetPermissionCount(PermissionsType permissions_type) const; 155 size_t GetPermissionCount(PermissionsType permissions_type) const;
154 size_t GetPermissionsDetailsCount(PermissionsType permissions_type) const; 156 size_t GetPermissionsDetailsCount(PermissionsType permissions_type) const;
155 base::string16 GetPermission(size_t index, 157 base::string16 GetPermission(size_t index,
156 PermissionsType permissions_type) const; 158 PermissionsType permissions_type) const;
157 base::string16 GetPermissionsDetails( 159 base::string16 GetPermissionsDetails(
158 size_t index, 160 size_t index,
159 PermissionsType permissions_type) const; 161 PermissionsType permissions_type) const;
160 bool GetIsShowingDetails(DetailsType type, size_t index) const; 162 bool GetIsShowingDetails(DetailsType type, size_t index) const;
161 size_t GetRetainedFileCount() const; 163 size_t GetRetainedFileCount() const;
162 base::string16 GetRetainedFile(size_t index) const; 164 base::string16 GetRetainedFile(size_t index) const;
165 size_t GetRetainedDeviceCount() const;
166 base::string16 GetRetainedDeviceMessageString(size_t index) const;
163 167
164 // Populated for BUNDLE_INSTALL_PROMPT. 168 // Populated for BUNDLE_INSTALL_PROMPT.
165 const extensions::BundleInstaller* bundle() const { return bundle_; } 169 const extensions::BundleInstaller* bundle() const { return bundle_; }
166 void set_bundle(const extensions::BundleInstaller* bundle) { 170 void set_bundle(const extensions::BundleInstaller* bundle) {
167 bundle_ = bundle; 171 bundle_ = bundle;
168 } 172 }
169 173
170 // Populated for all other types. 174 // Populated for all other types.
171 const extensions::Extension* extension() const { return extension_; } 175 const extensions::Extension* extension() const { return extension_; }
172 void set_extension(const extensions::Extension* extension) { 176 void set_extension(const extensions::Extension* extension) {
173 extension_ = extension; 177 extension_ = extension;
174 } 178 }
175 179
176 // May be populated for POST_INSTALL_PERMISSIONS_PROMPT. 180 // May be populated for POST_INSTALL_PERMISSIONS_PROMPT.
177 void set_retained_files(const std::vector<base::FilePath>& retained_files) { 181 void set_retained_files(const std::vector<base::FilePath>& retained_files) {
178 retained_files_ = retained_files; 182 retained_files_ = retained_files;
179 } 183 }
184 void set_retained_device_messages(
185 const std::vector<base::string16>& retained_device_messages) {
186 retained_device_messages_ = retained_device_messages;
187 }
180 188
181 const gfx::Image& icon() const { return icon_; } 189 const gfx::Image& icon() const { return icon_; }
182 void set_icon(const gfx::Image& icon) { icon_ = icon; } 190 void set_icon(const gfx::Image& icon) { icon_ = icon; }
183 191
184 bool has_webstore_data() const { return has_webstore_data_; } 192 bool has_webstore_data() const { return has_webstore_data_; }
185 193
186 const ExtensionInstallPromptExperiment* experiment() const { 194 const ExtensionInstallPromptExperiment* experiment() const {
187 return experiment_.get(); 195 return experiment_.get();
188 } 196 }
189 void set_experiment(ExtensionInstallPromptExperiment* experiment) { 197 void set_experiment(ExtensionInstallPromptExperiment* experiment) {
190 experiment_ = experiment; 198 experiment_ = experiment;
191 } 199 }
192 200
193 private: 201 private:
194 friend class base::RefCountedThreadSafe<Prompt>; 202 friend class base::RefCountedThreadSafe<Prompt>;
195 203
196 struct InstallPromptPermissions { 204 struct InstallPromptPermissions {
197 InstallPromptPermissions(); 205 InstallPromptPermissions();
198 ~InstallPromptPermissions(); 206 ~InstallPromptPermissions();
199 207
200 std::vector<base::string16> permissions; 208 std::vector<base::string16> permissions;
201 std::vector<base::string16> details; 209 std::vector<base::string16> details;
202 std::vector<bool> is_showing_details; 210 std::vector<bool> is_showing_details;
203 }; 211 };
204 212
205 virtual ~Prompt(); 213 virtual ~Prompt();
206 214
215 bool ShouldDisplayRevokeButton() const;
216
207 // Returns the InstallPromptPermissions corresponding to 217 // Returns the InstallPromptPermissions corresponding to
208 // |permissions_type|. 218 // |permissions_type|.
209 InstallPromptPermissions& GetPermissionsForType( 219 InstallPromptPermissions& GetPermissionsForType(
210 PermissionsType permissions_type); 220 PermissionsType permissions_type);
211 const InstallPromptPermissions& GetPermissionsForType( 221 const InstallPromptPermissions& GetPermissionsForType(
212 PermissionsType permissions_type) const; 222 PermissionsType permissions_type) const;
213 223
214 bool ShouldDisplayRevokeFilesButton() const; 224 bool ShouldDisplayRevokeFilesButton() const;
215 225
216 PromptType type_; 226 PromptType type_;
217 227
218 // Permissions that are being requested (may not be all of an extension's 228 // Permissions that are being requested (may not be all of an extension's
219 // permissions if only additional ones are being requested) 229 // permissions if only additional ones are being requested)
220 InstallPromptPermissions prompt_permissions_; 230 InstallPromptPermissions prompt_permissions_;
221 // Permissions that will be withheld upon install. 231 // Permissions that will be withheld upon install.
222 InstallPromptPermissions withheld_prompt_permissions_; 232 InstallPromptPermissions withheld_prompt_permissions_;
223 233
224 bool is_showing_details_for_retained_files_; 234 bool is_showing_details_for_retained_files_;
235 bool is_showing_details_for_retained_devices_;
225 236
226 // The extension or bundle being installed. 237 // The extension or bundle being installed.
227 const extensions::Extension* extension_; 238 const extensions::Extension* extension_;
228 const extensions::BundleInstaller* bundle_; 239 const extensions::BundleInstaller* bundle_;
229 240
230 // The icon to be displayed. 241 // The icon to be displayed.
231 gfx::Image icon_; 242 gfx::Image icon_;
232 243
233 // These fields are populated only when the prompt type is 244 // These fields are populated only when the prompt type is
234 // INLINE_INSTALL_PROMPT 245 // INLINE_INSTALL_PROMPT
235 // Already formatted to be locale-specific. 246 // Already formatted to be locale-specific.
236 std::string localized_user_count_; 247 std::string localized_user_count_;
237 // Range is kMinExtensionRating to kMaxExtensionRating 248 // Range is kMinExtensionRating to kMaxExtensionRating
238 double average_rating_; 249 double average_rating_;
239 int rating_count_; 250 int rating_count_;
240 251
241 // Whether we should display the user count (we anticipate this will be 252 // Whether we should display the user count (we anticipate this will be
242 // false if localized_user_count_ represents the number zero). 253 // false if localized_user_count_ represents the number zero).
243 bool show_user_count_; 254 bool show_user_count_;
244 255
245 // Whether or not this prompt has been populated with data from the 256 // Whether or not this prompt has been populated with data from the
246 // webstore. 257 // webstore.
247 bool has_webstore_data_; 258 bool has_webstore_data_;
248 259
249 std::vector<base::FilePath> retained_files_; 260 std::vector<base::FilePath> retained_files_;
261 std::vector<base::string16> retained_device_messages_;
250 262
251 scoped_refptr<ExtensionInstallPromptExperiment> experiment_; 263 scoped_refptr<ExtensionInstallPromptExperiment> experiment_;
252 264
253 DISALLOW_COPY_AND_ASSIGN(Prompt); 265 DISALLOW_COPY_AND_ASSIGN(Prompt);
254 }; 266 };
255 267
256 static const int kMinExtensionRating = 0; 268 static const int kMinExtensionRating = 0;
257 static const int kMaxExtensionRating = 5; 269 static const int kMaxExtensionRating = 5;
258 270
259 class Delegate { 271 class Delegate {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 const extensions::Extension* extension, 394 const extensions::Extension* extension,
383 const extensions::PermissionSet* permissions); 395 const extensions::PermissionSet* permissions);
384 396
385 // This is called by the app handler launcher to review what permissions the 397 // This is called by the app handler launcher to review what permissions the
386 // extension or app currently has. 398 // extension or app currently has.
387 // 399 //
388 // We *MUST* eventually call either Proceed() or Abort() on |delegate|. 400 // We *MUST* eventually call either Proceed() or Abort() on |delegate|.
389 virtual void ReviewPermissions( 401 virtual void ReviewPermissions(
390 Delegate* delegate, 402 Delegate* delegate,
391 const extensions::Extension* extension, 403 const extensions::Extension* extension,
392 const std::vector<base::FilePath>& retained_file_paths); 404 const std::vector<base::FilePath>& retained_file_paths,
405 const std::vector<base::string16>& retained_device_messages);
393 406
394 // Installation was successful. This is declared virtual for testing. 407 // Installation was successful. This is declared virtual for testing.
395 virtual void OnInstallSuccess(const extensions::Extension* extension, 408 virtual void OnInstallSuccess(const extensions::Extension* extension,
396 SkBitmap* icon); 409 SkBitmap* icon);
397 410
398 // Installation failed. This is declared virtual for testing. 411 // Installation failed. This is declared virtual for testing.
399 virtual void OnInstallFailure(const extensions::CrxInstallerError& error); 412 virtual void OnInstallFailure(const extensions::CrxInstallerError& error);
400 413
401 void set_callback_for_test(const ShowDialogCallback& show_dialog_callback) { 414 void set_callback_for_test(const ShowDialogCallback& show_dialog_callback) {
402 show_dialog_callback_ = show_dialog_callback; 415 show_dialog_callback_ = show_dialog_callback;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 Delegate* delegate_; 466 Delegate* delegate_;
454 467
455 // A pre-filled prompt. 468 // A pre-filled prompt.
456 scoped_refptr<Prompt> prompt_; 469 scoped_refptr<Prompt> prompt_;
457 470
458 // Used to show the confirm dialog. 471 // Used to show the confirm dialog.
459 ShowDialogCallback show_dialog_callback_; 472 ShowDialogCallback show_dialog_callback_;
460 }; 473 };
461 474
462 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_ 475 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698