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

Side by Side Diff: chrome/browser/ui/content_settings/content_setting_image_model.cc

Issue 2668833003: DialogBrowserTest implementation to invoke Content settings bubble dialogs. (Closed)
Patch Set: Fixed Cocoa build Created 3 years, 10 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/ui/content_settings/content_setting_image_model.h" 5 #include "chrome/browser/ui/content_settings/content_setting_image_model.h"
6 6
7 #include "base/feature_list.h" 7 #include "base/feature_list.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 void UpdateFromWebContents(WebContents* web_contents) override; 68 void UpdateFromWebContents(WebContents* web_contents) override;
69 69
70 ContentSettingBubbleModel* CreateBubbleModel( 70 ContentSettingBubbleModel* CreateBubbleModel(
71 ContentSettingBubbleModel::Delegate* delegate, 71 ContentSettingBubbleModel::Delegate* delegate,
72 WebContents* web_contents, 72 WebContents* web_contents,
73 Profile* profile) override; 73 Profile* profile) override;
74 74
75 bool ShouldRunAnimation(WebContents* web_contents) override; 75 bool ShouldRunAnimation(WebContents* web_contents) override;
76 void SetAnimationHasRun(WebContents* web_contents) override; 76 void SetAnimationHasRun(WebContents* web_contents) override;
77 77
78 ContentSettingsType GetContentType() override;
78 private: 79 private:
80 // This is cached here for testing purposes.
81 ContentSettingsType last_content_type_;
79 DISALLOW_COPY_AND_ASSIGN(ContentSettingMediaImageModel); 82 DISALLOW_COPY_AND_ASSIGN(ContentSettingMediaImageModel);
80 }; 83 };
81 84
82 class ContentSettingRPHImageModel : public ContentSettingSimpleImageModel { 85 class ContentSettingRPHImageModel : public ContentSettingSimpleImageModel {
83 public: 86 public:
84 ContentSettingRPHImageModel(); 87 ContentSettingRPHImageModel();
85 88
86 void UpdateFromWebContents(WebContents* web_contents) override; 89 void UpdateFromWebContents(WebContents* web_contents) override;
87 }; 90 };
88 91
89 class ContentSettingMIDISysExImageModel 92 class ContentSettingMIDISysExImageModel
90 : public ContentSettingSimpleImageModel { 93 : public ContentSettingSimpleImageModel {
91 public: 94 public:
92 ContentSettingMIDISysExImageModel(); 95 ContentSettingMIDISysExImageModel();
93 96
94 void UpdateFromWebContents(WebContents* web_contents) override; 97 void UpdateFromWebContents(WebContents* web_contents) override;
95
96 private: 98 private:
97 DISALLOW_COPY_AND_ASSIGN(ContentSettingMIDISysExImageModel); 99 DISALLOW_COPY_AND_ASSIGN(ContentSettingMIDISysExImageModel);
98 }; 100 };
99 101
100 namespace { 102 namespace {
101 103
102 struct ContentSettingsImageDetails { 104 struct ContentSettingsImageDetails {
103 ContentSettingsType type; 105 ContentSettingsType type;
104 gfx::VectorIconId icon_id; 106 gfx::VectorIconId icon_id;
105 int blocked_tooltip_id; 107 int blocked_tooltip_id;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 } 148 }
147 149
148 ContentSettingBubbleModel* ContentSettingSimpleImageModel::CreateBubbleModel( 150 ContentSettingBubbleModel* ContentSettingSimpleImageModel::CreateBubbleModel(
149 ContentSettingBubbleModel::Delegate* delegate, 151 ContentSettingBubbleModel::Delegate* delegate,
150 WebContents* web_contents, 152 WebContents* web_contents,
151 Profile* profile) { 153 Profile* profile) {
152 return ContentSettingBubbleModel::CreateContentSettingBubbleModel( 154 return ContentSettingBubbleModel::CreateContentSettingBubbleModel(
153 delegate, 155 delegate,
154 web_contents, 156 web_contents,
155 profile, 157 profile,
156 content_type()); 158 GetContentType());
tapted 2017/02/03 00:35:39 since this was claimed "for testing only" we shoul
157 } 159 }
158 160
159 bool ContentSettingSimpleImageModel::ShouldRunAnimation( 161 bool ContentSettingSimpleImageModel::ShouldRunAnimation(
160 WebContents* web_contents) { 162 WebContents* web_contents) {
161 if (!web_contents) 163 if (!web_contents)
162 return false; 164 return false;
163 165
164 TabSpecificContentSettings* content_settings = 166 TabSpecificContentSettings* content_settings =
165 TabSpecificContentSettings::FromWebContents(web_contents); 167 TabSpecificContentSettings::FromWebContents(web_contents);
166 if (!content_settings) 168 if (!content_settings)
167 return false; 169 return false;
168 170
169 return !content_settings->IsBlockageIndicated(content_type()); 171 return !content_settings->IsBlockageIndicated(GetContentType());
170 } 172 }
171 173
172 void ContentSettingSimpleImageModel::SetAnimationHasRun( 174 void ContentSettingSimpleImageModel::SetAnimationHasRun(
173 WebContents* web_contents) { 175 WebContents* web_contents) {
174 if (!web_contents) 176 if (!web_contents)
175 return; 177 return;
176 TabSpecificContentSettings* content_settings = 178 TabSpecificContentSettings* content_settings =
177 TabSpecificContentSettings::FromWebContents(web_contents); 179 TabSpecificContentSettings::FromWebContents(web_contents);
178 if (content_settings) 180 if (content_settings)
179 content_settings->SetBlockageHasBeenIndicated(content_type()); 181 content_settings->SetBlockageHasBeenIndicated(GetContentType());
182 }
183
184 ContentSettingsType ContentSettingSimpleImageModel::GetContentType() {
185 return content_type_;
180 } 186 }
181 187
182 // static 188 // static
183 std::unique_ptr<ContentSettingImageModel> 189 std::unique_ptr<ContentSettingImageModel>
184 ContentSettingSimpleImageModel::CreateForContentTypeForTesting( 190 ContentSettingSimpleImageModel::CreateForContentTypeForTesting(
185 ContentSettingsType content_settings_type) { 191 ContentSettingsType content_settings_type) {
186 if (content_settings_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) 192 if (content_settings_type == CONTENT_SETTINGS_TYPE_GEOLOCATION)
187 return base::MakeUnique<ContentSettingGeolocationImageModel>(); 193 return base::MakeUnique<ContentSettingGeolocationImageModel>();
188 194
189 if (content_settings_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) 195 if (content_settings_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS)
(...skipping 12 matching lines...) Expand all
202 ContentSettingsType content_type) 208 ContentSettingsType content_type)
203 : ContentSettingSimpleImageModel(content_type) { 209 : ContentSettingSimpleImageModel(content_type) {
204 } 210 }
205 211
206 void ContentSettingBlockedImageModel::UpdateFromWebContents( 212 void ContentSettingBlockedImageModel::UpdateFromWebContents(
207 WebContents* web_contents) { 213 WebContents* web_contents) {
208 set_visible(false); 214 set_visible(false);
209 if (!web_contents) 215 if (!web_contents)
210 return; 216 return;
211 217
212 const ContentSettingsType type = content_type(); 218 const ContentSettingsType type = GetContentType();
213 const ContentSettingsImageDetails* image_details = GetImageDetails(type); 219 const ContentSettingsImageDetails* image_details = GetImageDetails(type);
214 DCHECK(image_details) << "No entry for " << type << " in kImageDetails[]."; 220 DCHECK(image_details) << "No entry for " << type << " in kImageDetails[].";
215 221
216 int tooltip_id = image_details->blocked_tooltip_id; 222 int tooltip_id = image_details->blocked_tooltip_id;
217 int explanation_id = image_details->blocked_explanatory_text_id; 223 int explanation_id = image_details->blocked_explanatory_text_id;
218 224
219 Profile* profile = 225 Profile* profile =
220 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 226 Profile::FromBrowserContext(web_contents->GetBrowserContext());
221 HostContentSettingsMap* map = 227 HostContentSettingsMap* map =
222 HostContentSettingsMapFactory::GetForProfile(profile); 228 HostContentSettingsMapFactory::GetForProfile(profile);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 310
305 // Media ----------------------------------------------------------------------- 311 // Media -----------------------------------------------------------------------
306 312
307 ContentSettingMediaImageModel::ContentSettingMediaImageModel() 313 ContentSettingMediaImageModel::ContentSettingMediaImageModel()
308 : ContentSettingImageModel() { 314 : ContentSettingImageModel() {
309 } 315 }
310 316
311 void ContentSettingMediaImageModel::UpdateFromWebContents( 317 void ContentSettingMediaImageModel::UpdateFromWebContents(
312 WebContents* web_contents) { 318 WebContents* web_contents) {
313 set_visible(false); 319 set_visible(false);
314 320 last_content_type_ = CONTENT_SETTINGS_TYPE_DEFAULT;
315 if (!web_contents) 321 if (!web_contents)
316 return; 322 return;
317 323
318 TabSpecificContentSettings* content_settings = 324 TabSpecificContentSettings* content_settings =
319 TabSpecificContentSettings::FromWebContents(web_contents); 325 TabSpecificContentSettings::FromWebContents(web_contents);
320 if (!content_settings) 326 if (!content_settings)
321 return; 327 return;
322 TabSpecificContentSettings::MicrophoneCameraState state = 328 TabSpecificContentSettings::MicrophoneCameraState state =
323 content_settings->GetMicrophoneCameraState(); 329 content_settings->GetMicrophoneCameraState();
324 330
(...skipping 13 matching lines...) Expand all
338 gfx::VectorIconId::BLOCKED_BADGE); 344 gfx::VectorIconId::BLOCKED_BADGE);
339 if (is_mic) 345 if (is_mic)
340 id = is_cam ? IDS_MICROPHONE_CAMERA_BLOCKED : IDS_MICROPHONE_BLOCKED; 346 id = is_cam ? IDS_MICROPHONE_CAMERA_BLOCKED : IDS_MICROPHONE_BLOCKED;
341 } else { 347 } else {
342 set_icon_by_vector_id(gfx::VectorIconId::VIDEOCAM, 348 set_icon_by_vector_id(gfx::VectorIconId::VIDEOCAM,
343 gfx::VectorIconId::VECTOR_ICON_NONE); 349 gfx::VectorIconId::VECTOR_ICON_NONE);
344 id = IDS_CAMERA_ACCESSED; 350 id = IDS_CAMERA_ACCESSED;
345 if (is_mic) 351 if (is_mic)
346 id = is_cam ? IDS_MICROPHONE_CAMERA_ALLOWED : IDS_MICROPHONE_ACCESSED; 352 id = is_cam ? IDS_MICROPHONE_CAMERA_ALLOWED : IDS_MICROPHONE_ACCESSED;
347 } 353 }
354 // During bubble dialog testing, only one of the 'devices' will be blocked
355 last_content_type_ = is_mic ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC :
356 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
tapted 2017/02/03 00:35:39 did `git cl format` do this? (looks different to h
kylix_rd 2017/02/03 18:55:03 Yes, 'git cl format' did this.
348 set_tooltip(l10n_util::GetStringUTF16(id)); 357 set_tooltip(l10n_util::GetStringUTF16(id));
349 set_visible(true); 358 set_visible(true);
350 } 359 }
351 360
352 ContentSettingBubbleModel* ContentSettingMediaImageModel::CreateBubbleModel( 361 ContentSettingBubbleModel* ContentSettingMediaImageModel::CreateBubbleModel(
353 ContentSettingBubbleModel::Delegate* delegate, 362 ContentSettingBubbleModel::Delegate* delegate,
354 WebContents* web_contents, 363 WebContents* web_contents,
355 Profile* profile) { 364 Profile* profile) {
356 return new ContentSettingMediaStreamBubbleModel(delegate, 365 return new ContentSettingMediaStreamBubbleModel(delegate,
357 web_contents, 366 web_contents,
(...skipping 21 matching lines...) Expand all
379 TabSpecificContentSettings* content_settings = 388 TabSpecificContentSettings* content_settings =
380 TabSpecificContentSettings::FromWebContents(web_contents); 389 TabSpecificContentSettings::FromWebContents(web_contents);
381 if (content_settings) { 390 if (content_settings) {
382 content_settings->SetBlockageHasBeenIndicated( 391 content_settings->SetBlockageHasBeenIndicated(
383 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); 392 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
384 content_settings->SetBlockageHasBeenIndicated( 393 content_settings->SetBlockageHasBeenIndicated(
385 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); 394 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
386 } 395 }
387 } 396 }
388 397
398 ContentSettingsType ContentSettingMediaImageModel::GetContentType() {
399 return last_content_type_;
400 }
401
tapted 2017/02/03 00:35:39 nit: remove blank line
402
389 // Subresource Filter ---------------------------------------------------------- 403 // Subresource Filter ----------------------------------------------------------
390 404
391 ContentSettingSubresourceFilterImageModel:: 405 ContentSettingSubresourceFilterImageModel::
392 ContentSettingSubresourceFilterImageModel() 406 ContentSettingSubresourceFilterImageModel()
393 : ContentSettingImageModel() {} 407 : ContentSettingImageModel() {}
394 408
395 void ContentSettingSubresourceFilterImageModel::UpdateFromWebContents( 409 void ContentSettingSubresourceFilterImageModel::UpdateFromWebContents(
396 WebContents* web_contents) { 410 WebContents* web_contents) {
397 set_visible(false); 411 set_visible(false);
398 412
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 return gfx::Image( 528 return gfx::Image(
515 gfx::CreateVectorIconWithBadge(icon_id_, 16, icon_color, icon_badge_id_)); 529 gfx::CreateVectorIconWithBadge(icon_id_, 16, icon_color, icon_badge_id_));
516 } 530 }
517 531
518 ContentSettingImageModel::ContentSettingImageModel() 532 ContentSettingImageModel::ContentSettingImageModel()
519 : is_visible_(false), 533 : is_visible_(false),
520 icon_id_(gfx::VectorIconId::VECTOR_ICON_NONE), 534 icon_id_(gfx::VectorIconId::VECTOR_ICON_NONE),
521 icon_badge_id_(gfx::VectorIconId::VECTOR_ICON_NONE), 535 icon_badge_id_(gfx::VectorIconId::VECTOR_ICON_NONE),
522 explanatory_string_id_(0) {} 536 explanatory_string_id_(0) {}
523 537
538 ContentSettingsType ContentSettingImageModel::GetContentType() {
539 return CONTENT_SETTINGS_TYPE_DEFAULT;
540 }
541
524 // static 542 // static
525 std::vector<std::unique_ptr<ContentSettingImageModel>> 543 std::vector<std::unique_ptr<ContentSettingImageModel>>
526 ContentSettingImageModel::GenerateContentSettingImageModels() { 544 ContentSettingImageModel::GenerateContentSettingImageModels() {
527 std::vector<std::unique_ptr<ContentSettingImageModel>> result; 545 std::vector<std::unique_ptr<ContentSettingImageModel>> result;
528 546
529 // The ordering of the models here influences the order in which icons are 547 // The ordering of the models here influences the order in which icons are
530 // shown in the omnibox. 548 // shown in the omnibox.
531 result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( 549 result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>(
532 CONTENT_SETTINGS_TYPE_COOKIES)); 550 CONTENT_SETTINGS_TYPE_COOKIES));
533 result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( 551 result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>(
(...skipping 22 matching lines...) Expand all
556 574
557 #if defined(OS_MACOSX) 575 #if defined(OS_MACOSX)
558 bool ContentSettingImageModel::UpdateFromWebContentsAndCheckIfIconChanged( 576 bool ContentSettingImageModel::UpdateFromWebContentsAndCheckIfIconChanged(
559 content::WebContents* web_contents) { 577 content::WebContents* web_contents) {
560 gfx::VectorIconId old_icon = icon_id_; 578 gfx::VectorIconId old_icon = icon_id_;
561 gfx::VectorIconId old_badge_icon = icon_badge_id_; 579 gfx::VectorIconId old_badge_icon = icon_badge_id_;
562 UpdateFromWebContents(web_contents); 580 UpdateFromWebContents(web_contents);
563 return old_icon != icon_id_ && old_badge_icon != icon_badge_id_; 581 return old_icon != icon_id_ && old_badge_icon != icon_badge_id_;
564 } 582 }
565 #endif 583 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698