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

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

Issue 2171713002: Safe browsing subresource filter bubble UI skeleton. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove empty line Created 4 years, 4 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/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 10 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
(...skipping 24 matching lines...) Expand all
35 35
36 // The image models hierarchy: 36 // The image models hierarchy:
37 // 37 //
38 // ContentSettingImageModel - base class 38 // ContentSettingImageModel - base class
39 // ContentSettingSimpleImageModel - single content setting 39 // ContentSettingSimpleImageModel - single content setting
40 // ContentSettingBlockedImageModel - generic blocked setting 40 // ContentSettingBlockedImageModel - generic blocked setting
41 // ContentSettingGeolocationImageModel - geolocation 41 // ContentSettingGeolocationImageModel - geolocation
42 // ContentSettingRPHImageModel - protocol handlers 42 // ContentSettingRPHImageModel - protocol handlers
43 // ContentSettingMIDISysExImageModel - midi sysex 43 // ContentSettingMIDISysExImageModel - midi sysex
44 // ContentSettingMediaImageModel - media 44 // ContentSettingMediaImageModel - media
45 // ContentSettingSubresourceFilterImageModel - deceptive content
45 46
46 class ContentSettingBlockedImageModel : public ContentSettingSimpleImageModel { 47 class ContentSettingBlockedImageModel : public ContentSettingSimpleImageModel {
47 public: 48 public:
48 explicit ContentSettingBlockedImageModel(ContentSettingsType content_type); 49 explicit ContentSettingBlockedImageModel(ContentSettingsType content_type);
49 50
50 void UpdateFromWebContents(WebContents* web_contents) override; 51 void UpdateFromWebContents(WebContents* web_contents) override;
51 52
52 private: 53 private:
53 DISALLOW_COPY_AND_ASSIGN(ContentSettingBlockedImageModel); 54 DISALLOW_COPY_AND_ASSIGN(ContentSettingBlockedImageModel);
54 }; 55 };
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 ContentSettingBubbleModel::Delegate* delegate, 413 ContentSettingBubbleModel::Delegate* delegate,
413 WebContents* web_contents, 414 WebContents* web_contents,
414 Profile* profile) { 415 Profile* profile) {
415 return new ContentSettingMediaStreamBubbleModel(delegate, 416 return new ContentSettingMediaStreamBubbleModel(delegate,
416 web_contents, 417 web_contents,
417 profile); 418 profile);
418 } 419 }
419 420
420 bool ContentSettingMediaImageModel::ShouldRunAnimation( 421 bool ContentSettingMediaImageModel::ShouldRunAnimation(
421 WebContents* web_contents) { 422 WebContents* web_contents) {
422 // TODO(msramek): For bubbles that are not tied to a single content setting,
423 // TabSpecificContentSettings is not a good place to store this bit.
424 // Perhaps we should instead use a map<WebContents*, bool> here in
425 // ContentSettingMediaImageModel.
426 if (!web_contents) 423 if (!web_contents)
427 return false; 424 return false;
428 TabSpecificContentSettings* content_settings = 425 TabSpecificContentSettings* content_settings =
429 TabSpecificContentSettings::FromWebContents(web_contents); 426 TabSpecificContentSettings::FromWebContents(web_contents);
430 if (!content_settings) 427 if (!content_settings)
431 return false; 428 return false;
432 return (!content_settings->IsBlockageIndicated( 429 return (!content_settings->IsBlockageIndicated(
433 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) && 430 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) &&
434 !content_settings->IsBlockageIndicated( 431 !content_settings->IsBlockageIndicated(
435 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); 432 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
436 } 433 }
437 434
438 void ContentSettingMediaImageModel::SetAnimationHasRun( 435 void ContentSettingMediaImageModel::SetAnimationHasRun(
439 WebContents* web_contents) { 436 WebContents* web_contents) {
440 if (!web_contents) 437 if (!web_contents)
441 return; 438 return;
442 TabSpecificContentSettings* content_settings = 439 TabSpecificContentSettings* content_settings =
443 TabSpecificContentSettings::FromWebContents(web_contents); 440 TabSpecificContentSettings::FromWebContents(web_contents);
444 if (content_settings) { 441 if (content_settings) {
445 content_settings->SetBlockageHasBeenIndicated( 442 content_settings->SetBlockageHasBeenIndicated(
446 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC); 443 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
447 content_settings->SetBlockageHasBeenIndicated( 444 content_settings->SetBlockageHasBeenIndicated(
448 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA); 445 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
449 } 446 }
450 } 447 }
451 448
449 // Subresource Filter ----------------------------------------------------------
450
451 ContentSettingSubresourceFilterImageModel::
452 ContentSettingSubresourceFilterImageModel()
453 : ContentSettingImageModel() {}
454
455 void ContentSettingSubresourceFilterImageModel::UpdateFromWebContents(
456 WebContents* web_contents) {
457 set_visible(false);
458
459 if (!web_contents)
460 return;
461
462 TabSpecificContentSettings* content_settings =
463 TabSpecificContentSettings::FromWebContents(web_contents);
464
465 if (!content_settings || !content_settings->IsSubresourceBlocked())
466 return;
467
468 if (!UseVectorGraphics()) {
469 SetIconByResourceId(IDR_SUBRESOURCE_FILTER_ACTIVE);
470 } else {
471 set_icon_by_vector_id(gfx::VectorIconId::SUBRESOURCE_FILTER_ACTIVE,
472 gfx::VectorIconId::BLOCKED_BADGE);
473 }
474 set_explanatory_string_id(IDS_FILTERED_DECEPTIVE_CONTENT_PROMPT_TITLE);
475 // TODO(melandory): Set tooltip text.
476 set_visible(true);
477 }
478
479 ContentSettingBubbleModel*
480 ContentSettingSubresourceFilterImageModel::CreateBubbleModel(
481 ContentSettingBubbleModel::Delegate* delegate,
482 WebContents* web_contents,
483 Profile* profile) {
484 return new ContentSettingSubresourceFilterBubbleModel(delegate, web_contents,
485 profile);
486 }
487
488 bool ContentSettingSubresourceFilterImageModel::ShouldRunAnimation(
489 WebContents* web_contents) {
490 if (!web_contents)
491 return false;
492 TabSpecificContentSettings* content_settings =
493 TabSpecificContentSettings::FromWebContents(web_contents);
494 return content_settings &&
495 content_settings->IsSubresourceBlockageIndicated();
496 }
497
498 void ContentSettingSubresourceFilterImageModel::SetAnimationHasRun(
499 WebContents* web_contents) {
500 if (!web_contents)
501 return;
502 TabSpecificContentSettings* content_settings =
503 TabSpecificContentSettings::FromWebContents(web_contents);
504 if (content_settings)
505 content_settings->SetSubresourceBlockageIndicated();
506 }
507
452 // Protocol handlers ----------------------------------------------------------- 508 // Protocol handlers -----------------------------------------------------------
453 509
454 ContentSettingRPHImageModel::ContentSettingRPHImageModel() 510 ContentSettingRPHImageModel::ContentSettingRPHImageModel()
455 : ContentSettingSimpleImageModel(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) { 511 : ContentSettingSimpleImageModel(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) {
456 if (!UseVectorGraphics()) { 512 if (!UseVectorGraphics()) {
457 SetIconByResourceId(IDR_REGISTER_PROTOCOL_HANDLER); 513 SetIconByResourceId(IDR_REGISTER_PROTOCOL_HANDLER);
458 } else { 514 } else {
459 set_icon_by_vector_id(gfx::VectorIconId::PROTOCOL_HANDLER, 515 set_icon_by_vector_id(gfx::VectorIconId::PROTOCOL_HANDLER,
460 gfx::VectorIconId::VECTOR_ICON_NONE); 516 gfx::VectorIconId::VECTOR_ICON_NONE);
461 } 517 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_PPAPI_BROKER)); 612 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_PPAPI_BROKER));
557 result.push_back( 613 result.push_back(
558 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_PLUGINS)); 614 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_PLUGINS));
559 result.push_back( 615 result.push_back(
560 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_POPUPS)); 616 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_POPUPS));
561 result.push_back(new ContentSettingGeolocationImageModel()); 617 result.push_back(new ContentSettingGeolocationImageModel());
562 result.push_back( 618 result.push_back(
563 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT)); 619 new ContentSettingBlockedImageModel(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT));
564 result.push_back(new ContentSettingRPHImageModel()); 620 result.push_back(new ContentSettingRPHImageModel());
565 result.push_back(new ContentSettingMediaImageModel()); 621 result.push_back(new ContentSettingMediaImageModel());
622 result.push_back(new ContentSettingSubresourceFilterImageModel());
566 result.push_back( 623 result.push_back(
567 new ContentSettingBlockedImageModel( 624 new ContentSettingBlockedImageModel(
568 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS)); 625 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS));
569 result.push_back(new ContentSettingMIDISysExImageModel()); 626 result.push_back(new ContentSettingMIDISysExImageModel());
570 627
571 return result; 628 return result;
572 } 629 }
573 630
574 void ContentSettingImageModel::SetIconByResourceId(int id) { 631 void ContentSettingImageModel::SetIconByResourceId(int id) {
575 raster_icon_id_ = id; 632 raster_icon_id_ = id;
(...skipping 10 matching lines...) Expand all
586 UpdateFromWebContents(web_contents); 643 UpdateFromWebContents(web_contents);
587 return old_vector_icon != vector_icon_id_ && 644 return old_vector_icon != vector_icon_id_ &&
588 old_badge_icon != vector_icon_badge_id_; 645 old_badge_icon != vector_icon_badge_id_;
589 } else { 646 } else {
590 int old_icon = raster_icon_id_; 647 int old_icon = raster_icon_id_;
591 UpdateFromWebContents(web_contents); 648 UpdateFromWebContents(web_contents);
592 return old_icon != raster_icon_id_; 649 return old_icon != raster_icon_id_;
593 } 650 }
594 } 651 }
595 #endif 652 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698