1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 6 #define CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "chrome/common/content_settings_types.h" 12 13 namespace content { 14 class WebContents; 15 } 16 17 // This model provides data (icon ids and tooltip) for the content setting icons 18 // that are displayed in the location bar. 19 class ContentSettingImageModel { 20 public: 21 virtual ~ContentSettingImageModel() {} 22 23 // Factory function. 24 static ContentSettingImageModel* CreateContentSettingImageModel( 25 ContentSettingsType content_settings_type); 26 27 // Notifies this model that its setting might have changed and it may need to 28 // update its visibility, icon and tooltip. 29 virtual void UpdateFromWebContents(content::WebContents* web_contents) = 0; 30 31 ContentSettingsType get_content_settings_type() const { 32 return content_settings_type_; 33 } 34 bool is_visible() const { return is_visible_; } 35 int get_icon() const { return icon_; } 36 // Returns the resource ID of a string to show when the icon appears, or 0 if 37 // we don't wish to show anything. 38 int explanatory_string_id() const { return explanatory_string_id_; } 39 std::string get_tooltip() const { return tooltip_; } 40 41 protected: 42 explicit ContentSettingImageModel(ContentSettingsType content_settings_type); 43 void set_visible(bool visible) { is_visible_ = visible; } 44 void set_icon(int icon) { icon_ = icon; } 45 void set_explanatory_string_id(int text_id) { 46 explanatory_string_id_ = text_id; 47 } 48 void set_tooltip(const std::string& tooltip) { tooltip_ = tooltip; } 49 50 private: 51 const ContentSettingsType content_settings_type_; 52 bool is_visible_; 53 int icon_; 54 int explanatory_string_id_; 55 std::string tooltip_; 56 57 DISALLOW_COPY_AND_ASSIGN(ContentSettingImageModel); 58 }; 59 60 #endif // CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 61