| OLD | NEW | 
|---|
|  | (Empty) | 
| 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_PAGE_INFO_WEBSITE_SETTINGS_POPUP_VIEW_H_ |  | 
| 6 #define CHROME_BROWSER_UI_VIEWS_PAGE_INFO_WEBSITE_SETTINGS_POPUP_VIEW_H_ |  | 
| 7 |  | 
| 8 #include <memory> |  | 
| 9 |  | 
| 10 #include "base/compiler_specific.h" |  | 
| 11 #include "base/macros.h" |  | 
| 12 #include "base/memory/weak_ptr.h" |  | 
| 13 #include "chrome/browser/ui/page_info/website_settings_ui.h" |  | 
| 14 #include "chrome/browser/ui/views/page_info/chosen_object_row_observer.h" |  | 
| 15 #include "chrome/browser/ui/views/page_info/permission_selector_row.h" |  | 
| 16 #include "chrome/browser/ui/views/page_info/permission_selector_row_observer.h" |  | 
| 17 #include "content/public/browser/web_contents_observer.h" |  | 
| 18 #include "ui/views/bubble/bubble_dialog_delegate.h" |  | 
| 19 #include "ui/views/controls/button/button.h" |  | 
| 20 #include "ui/views/controls/link_listener.h" |  | 
| 21 #include "ui/views/controls/separator.h" |  | 
| 22 #include "ui/views/controls/styled_label_listener.h" |  | 
| 23 |  | 
| 24 class GURL; |  | 
| 25 class PopupHeaderView; |  | 
| 26 class Profile; |  | 
| 27 |  | 
| 28 namespace content { |  | 
| 29 class WebContents; |  | 
| 30 } |  | 
| 31 |  | 
| 32 namespace net { |  | 
| 33 class X509Certificate; |  | 
| 34 } |  | 
| 35 |  | 
| 36 namespace security_state { |  | 
| 37 struct SecurityInfo; |  | 
| 38 }  // namespace security_state |  | 
| 39 |  | 
| 40 namespace test { |  | 
| 41 class WebsiteSettingsPopupViewTestApi; |  | 
| 42 } |  | 
| 43 |  | 
| 44 namespace views { |  | 
| 45 class Link; |  | 
| 46 class Widget; |  | 
| 47 } |  | 
| 48 |  | 
| 49 enum : int { |  | 
| 50   // Left icon margin. |  | 
| 51   kPermissionIconMarginLeft = 6, |  | 
| 52   // The width of the column that contains the permissions icons. |  | 
| 53   kPermissionIconColumnWidth = 16, |  | 
| 54 }; |  | 
| 55 |  | 
| 56 // The views implementation of the website settings UI. |  | 
| 57 class WebsiteSettingsPopupView : public content::WebContentsObserver, |  | 
| 58                                  public PermissionSelectorRowObserver, |  | 
| 59                                  public ChosenObjectRowObserver, |  | 
| 60                                  public views::BubbleDialogDelegateView, |  | 
| 61                                  public views::ButtonListener, |  | 
| 62                                  public views::LinkListener, |  | 
| 63                                  public views::StyledLabelListener, |  | 
| 64                                  public WebsiteSettingsUI { |  | 
| 65  public: |  | 
| 66   ~WebsiteSettingsPopupView() override; |  | 
| 67 |  | 
| 68   // Type of the popup being displayed. |  | 
| 69   enum PopupType { |  | 
| 70     POPUP_NONE, |  | 
| 71     // Usual page info bubble for websites. |  | 
| 72     POPUP_WEBSITE_SETTINGS, |  | 
| 73     // Custom bubble for internal pages like chrome:// and chrome-extensions://. |  | 
| 74     POPUP_INTERNAL_PAGE |  | 
| 75   }; |  | 
| 76 |  | 
| 77   // If |anchor_view| is null, |anchor_rect| is used to anchor the bubble. |  | 
| 78   static void ShowPopup(views::View* anchor_view, |  | 
| 79                         const gfx::Rect& anchor_rect, |  | 
| 80                         Profile* profile, |  | 
| 81                         content::WebContents* web_contents, |  | 
| 82                         const GURL& url, |  | 
| 83                         const security_state::SecurityInfo& security_info); |  | 
| 84 |  | 
| 85   // Returns the type of the popup bubble being shown. |  | 
| 86   static PopupType GetShownPopupType(); |  | 
| 87 |  | 
| 88  private: |  | 
| 89   friend class test::WebsiteSettingsPopupViewTestApi; |  | 
| 90 |  | 
| 91   WebsiteSettingsPopupView(views::View* anchor_view, |  | 
| 92                            gfx::NativeView parent_window, |  | 
| 93                            Profile* profile, |  | 
| 94                            content::WebContents* web_contents, |  | 
| 95                            const GURL& url, |  | 
| 96                            const security_state::SecurityInfo& security_info); |  | 
| 97 |  | 
| 98   // WebContentsObserver implementation. |  | 
| 99   void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; |  | 
| 100   void WebContentsDestroyed() override; |  | 
| 101 |  | 
| 102   // PermissionSelectorRowObserver implementation. |  | 
| 103   void OnPermissionChanged( |  | 
| 104       const WebsiteSettingsUI::PermissionInfo& permission) override; |  | 
| 105 |  | 
| 106   // ChosenObjectRowObserver implementation. |  | 
| 107   void OnChosenObjectDeleted( |  | 
| 108       const WebsiteSettingsUI::ChosenObjectInfo& info) override; |  | 
| 109 |  | 
| 110   // views::BubbleDialogDelegateView implementation. |  | 
| 111   base::string16 GetWindowTitle() const override; |  | 
| 112   bool ShouldShowCloseButton() const override; |  | 
| 113   void OnWidgetDestroying(views::Widget* widget) override; |  | 
| 114   int GetDialogButtons() const override; |  | 
| 115   const gfx::FontList& GetTitleFontList() const override; |  | 
| 116 |  | 
| 117   // views::ButtonListener implementation. |  | 
| 118   void ButtonPressed(views::Button* button, const ui::Event& event) override; |  | 
| 119 |  | 
| 120   // views::LinkListener implementation. |  | 
| 121   void LinkClicked(views::Link* source, int event_flags) override; |  | 
| 122 |  | 
| 123   // views::StyledLabelListener implementation. |  | 
| 124   void StyledLabelLinkClicked(views::StyledLabel* label, |  | 
| 125                               const gfx::Range& range, |  | 
| 126                               int event_flags) override; |  | 
| 127 |  | 
| 128   // views::View implementation. |  | 
| 129   gfx::Size GetPreferredSize() const override; |  | 
| 130 |  | 
| 131   // WebsiteSettingsUI implementations. |  | 
| 132   void SetCookieInfo(const CookieInfoList& cookie_info_list) override; |  | 
| 133   void SetPermissionInfo(const PermissionInfoList& permission_info_list, |  | 
| 134                          ChosenObjectInfoList chosen_object_info_list) override; |  | 
| 135   void SetIdentityInfo(const IdentityInfo& identity_info) override; |  | 
| 136 |  | 
| 137   // Creates the contents of the |site_settings_view_|. The ownership of the |  | 
| 138   // returned view is transferred to the caller. |  | 
| 139   views::View* CreateSiteSettingsView(int side_margin) WARN_UNUSED_RESULT; |  | 
| 140 |  | 
| 141   // Used to asynchronously handle clicks since these calls may cause the |  | 
| 142   // destruction of the settings view and the base class window still needs to |  | 
| 143   // be alive to finish handling the mouse or keyboard click. |  | 
| 144   void HandleLinkClickedAsync(views::Link* source); |  | 
| 145 |  | 
| 146   // Whether DevTools is disabled for the relevant profile. |  | 
| 147   bool is_devtools_disabled_; |  | 
| 148 |  | 
| 149   // The presenter that controls the Website Settings UI. |  | 
| 150   std::unique_ptr<WebsiteSettings> presenter_; |  | 
| 151 |  | 
| 152   Profile* profile_; |  | 
| 153 |  | 
| 154   // The header section (containing security-related information). |  | 
| 155   PopupHeaderView* header_; |  | 
| 156 |  | 
| 157   // The security summary for the current page. |  | 
| 158   base::string16 summary_text_; |  | 
| 159 |  | 
| 160   // The separator between the header and the site settings view. |  | 
| 161   views::Separator* separator_; |  | 
| 162 |  | 
| 163   // The view that contains the cookie and permissions sections. |  | 
| 164   views::View* site_settings_view_; |  | 
| 165   // The view that contains the contents of the "Cookies" part of the site |  | 
| 166   // settings view. |  | 
| 167   views::View* cookies_view_; |  | 
| 168   // The link that opens the "Cookies" dialog. |  | 
| 169   views::Link* cookie_dialog_link_; |  | 
| 170   // The view that contains the "Permissions" table of the site settings view. |  | 
| 171   views::View* permissions_view_; |  | 
| 172 |  | 
| 173   // The certificate provided by the site, if one exists. |  | 
| 174   scoped_refptr<net::X509Certificate> certificate_; |  | 
| 175 |  | 
| 176   // These rows bundle together all the |View|s involved in a single row of the |  | 
| 177   // permissions section, and keep those views updated when the underlying |  | 
| 178   // |Permission| changes. |  | 
| 179   std::vector<std::unique_ptr<PermissionSelectorRow>> selector_rows_; |  | 
| 180 |  | 
| 181   base::WeakPtrFactory<WebsiteSettingsPopupView> weak_factory_; |  | 
| 182 |  | 
| 183   DISALLOW_COPY_AND_ASSIGN(WebsiteSettingsPopupView); |  | 
| 184 }; |  | 
| 185 |  | 
| 186 #endif  // CHROME_BROWSER_UI_VIEWS_PAGE_INFO_WEBSITE_SETTINGS_POPUP_VIEW_H_ |  | 
| OLD | NEW | 
|---|