permission_selector_view.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "base/memory/scoped_ptr.h" 11#include "base/observer_list.h" 12#include "base/strings/string16.h" 13#include "chrome/browser/ui/views/website_settings/permission_selector_view_observer.h" 14#include "chrome/browser/ui/website_settings/permission_menu_model.h" 15#include "chrome/browser/ui/website_settings/website_settings_ui.h" 16#include "chrome/common/content_settings.h" 17#include "chrome/common/content_settings_types.h" 18#include "ui/views/controls/button/menu_button_listener.h" 19#include "ui/views/view.h" 20 21namespace internal { 22class PermissionMenuButton; 23} 24 25namespace views { 26class ImageView; 27class MenuRunner; 28} 29 30// A custom view for selecting a permission setting for the given permission 31// |type|. 32class PermissionSelectorView : public views::View { 33 public: 34 PermissionSelectorView(const GURL& url, 35 const WebsiteSettingsUI::PermissionInfo& permission); 36 37 void AddObserver(PermissionSelectorViewObserver* observer); 38 39 void PermissionChanged(const WebsiteSettingsUI::PermissionInfo& permission); 40 41 protected: 42 // Overridden from views::View. 43 virtual void ChildPreferredSizeChanged(View* child) OVERRIDE; 44 45 private: 46 virtual ~PermissionSelectorView(); 47 48 // Model for the permission's menu. 49 scoped_ptr<PermissionMenuModel> menu_model_; 50 51 views::ImageView* icon_; // Owned by the views hierachy. 52 internal::PermissionMenuButton* menu_button_; // Owned by the views hierachy. 53 54 ObserverList<PermissionSelectorViewObserver, false> observer_list_; 55 56 DISALLOW_COPY_AND_ASSIGN(PermissionSelectorView); 57}; 58 59#endif // CHROME_BROWSER_UI_VIEWS_WEBSITE_SETTINGS_PERMISSION_SELECTOR_VIEW_H_ 60