15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/content_settings_types.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This model provides data (icon ids and tooltip) for the content setting icons 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// that are displayed in the location bar. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingImageModel { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ContentSettingImageModel() {} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Factory function. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ContentSettingImageModel* CreateContentSettingImageModel( 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType content_settings_type); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies this model that its setting might have changed and it may need to 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // update its visibility, icon and tooltip. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFromWebContents(content::WebContents* web_contents) = 0; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsType get_content_settings_type() const { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return content_settings_type_; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_visible() const { return is_visible_; } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int get_icon() const { return icon_; } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the resource ID of a string to show when the icon appears, or 0 if 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we don't wish to show anything. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int explanatory_string_id() const { return explanatory_string_id_; } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string get_tooltip() const { return tooltip_; } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit ContentSettingImageModel(ContentSettingsType content_settings_type); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_visible(bool visible) { is_visible_ = visible; } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_icon(int icon) { icon_ = icon; } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_explanatory_string_id(int text_id) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explanatory_string_id_ = text_id; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_tooltip(const std::string& tooltip) { tooltip_ = tooltip; } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ContentSettingsType content_settings_type_; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_visible_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int icon_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int explanatory_string_id_; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string tooltip_; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ContentSettingImageModel); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_IMAGE_MODEL_H_ 61