| OLD | NEW |
| 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this |
| 2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
| 3 // LICENSE file. | 3 // LICENSE file. |
| 4 | 4 |
| 5 // Defines the public interface for the blocked popup notifications. This | 5 // Defines the public interface for the blocked popup notifications. This |
| 6 // interface should only be used by TabContents. Users and subclasses of | 6 // interface should only be used by TabContents. Users and subclasses of |
| 7 // TabContents should use the appropriate methods on TabContents to access | 7 // TabContents should use the appropriate methods on TabContents to access |
| 8 // information about blocked popups. | 8 // information about blocked popups. |
| 9 | 9 |
| 10 #ifndef CHROME_BROWSER_VIEWS_BLOCKED_POPUP_CONTAINER_H_ | 10 #ifndef CHROME_BROWSER_VIEWS_BLOCKED_POPUP_CONTAINER_H_ |
| 11 #define CHROME_BROWSER_VIEWS_BLOCKED_POPUP_CONTAINER_H_ | 11 #define CHROME_BROWSER_VIEWS_BLOCKED_POPUP_CONTAINER_H_ |
| 12 | 12 |
| 13 #include <set> |
| 13 #include <utility> | 14 #include <utility> |
| 14 #include <vector> | 15 #include <vector> |
| 15 | 16 |
| 16 #include "app/animation.h" | 17 #include "app/animation.h" |
| 17 #include "base/gfx/rect.h" | 18 #include "base/gfx/rect.h" |
| 18 #include "chrome/browser/tab_contents/constrained_window.h" | 19 #include "chrome/browser/tab_contents/constrained_window.h" |
| 19 #include "chrome/browser/tab_contents/tab_contents_delegate.h" | 20 #include "chrome/browser/tab_contents/tab_contents_delegate.h" |
| 20 #include "chrome/common/notification_registrar.h" | 21 #include "chrome/common/notification_registrar.h" |
| 21 #include "views/controls/button/button.h" | 22 #include "views/controls/button/button.h" |
| 22 #include "views/controls/button/menu_button.h" | 23 #include "views/controls/button/menu_button.h" |
| 23 #include "views/controls/menu/menu.h" | 24 #include "views/controls/menu/menu.h" |
| 24 #include "views/view.h" | 25 #include "views/view.h" |
| 25 #include "views/widget/widget_win.h" | 26 #include "views/widget/widget_win.h" |
| 26 | 27 |
| 27 class BlockedPopupContainer; | 28 class BlockedPopupContainer; |
| 29 class PrefService; |
| 28 class Profile; | 30 class Profile; |
| 29 class TabContents; | 31 class TabContents; |
| 30 class TextButton; | 32 class TextButton; |
| 31 | 33 |
| 32 namespace views { | 34 namespace views { |
| 33 class ImageButton; | 35 class ImageButton; |
| 34 } | 36 } |
| 35 | 37 |
| 36 // The view presented to the user notifying them of the number of popups | 38 // The view presented to the user notifying them of the number of popups |
| 37 // blocked. This view should only be used inside of BlockedPopupContainer. | 39 // blocked. This view should only be used inside of BlockedPopupContainer. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 86 |
| 85 // Takes ownership of TabContents that are unrequested popup windows and | 87 // Takes ownership of TabContents that are unrequested popup windows and |
| 86 // presents an interface to the user for launching them. (Or never showing them | 88 // presents an interface to the user for launching them. (Or never showing them |
| 87 // again). | 89 // again). |
| 88 class BlockedPopupContainer : public Animation, | 90 class BlockedPopupContainer : public Animation, |
| 89 public ConstrainedWindow, | 91 public ConstrainedWindow, |
| 90 public NotificationObserver, | 92 public NotificationObserver, |
| 91 public TabContentsDelegate, | 93 public TabContentsDelegate, |
| 92 public views::WidgetWin { | 94 public views::WidgetWin { |
| 93 public: | 95 public: |
| 94 virtual ~BlockedPopupContainer(); | 96 static void RegisterUserPrefs(PrefService* prefs); |
| 95 | 97 |
| 96 // Creates a BlockedPopupContainer, anchoring the container to the lower | 98 // Creates a BlockedPopupContainer, anchoring the container to the lower |
| 97 // right corner. | 99 // right corner. |
| 98 static BlockedPopupContainer* Create( | 100 static BlockedPopupContainer* Create( |
| 99 TabContents* owner, Profile* profile, const gfx::Point& initial_anchor); | 101 TabContents* owner, Profile* profile, const gfx::Point& initial_anchor); |
| 100 | 102 |
| 103 virtual ~BlockedPopupContainer(); |
| 104 |
| 101 // Adds a popup to this container. |bounds| are the window bounds requested by | 105 // Adds a popup to this container. |bounds| are the window bounds requested by |
| 102 // the popup window. | 106 // the popup window. |
| 103 void AddTabContents(TabContents* tab_contents, | 107 void AddTabContents(TabContents* tab_contents, |
| 104 const gfx::Rect& bounds, | 108 const gfx::Rect& bounds, |
| 105 const std::string& host); | 109 const std::string& host); |
| 106 | 110 |
| 107 // Shows the blocked popup at index |index|. | 111 // Shows the blocked popup at index |index|. |
| 108 void LaunchPopupAtIndex(size_t index); | 112 void LaunchPopupAtIndex(size_t index); |
| 109 | 113 |
| 110 // Returns the number of blocked popups | 114 // Returns the number of blocked popups |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 std::string host; | 221 std::string host; |
| 218 }; | 222 }; |
| 219 typedef std::vector<BlockedPopup> BlockedPopups; | 223 typedef std::vector<BlockedPopup> BlockedPopups; |
| 220 | 224 |
| 221 // TabContents is the popup contents. string is opener hostname. | 225 // TabContents is the popup contents. string is opener hostname. |
| 222 typedef std::map<TabContents*, std::string> UnblockedPopups; | 226 typedef std::map<TabContents*, std::string> UnblockedPopups; |
| 223 | 227 |
| 224 // string is hostname. bool is whitelisted status. | 228 // string is hostname. bool is whitelisted status. |
| 225 typedef std::map<std::string, bool> PopupHosts; | 229 typedef std::map<std::string, bool> PopupHosts; |
| 226 | 230 |
| 231 // string is hostname. |
| 232 typedef std::set<std::string> Whitelist; |
| 233 |
| 227 // Creates a container for a certain TabContents. | 234 // Creates a container for a certain TabContents. |
| 228 BlockedPopupContainer(TabContents* owner, Profile* profile); | 235 BlockedPopupContainer(TabContents* owner, PrefService* prefs); |
| 229 | 236 |
| 230 // Overridden from Animation: | 237 // Overridden from Animation: |
| 231 // Changes the visibility percentage of the BlockedPopupContainer. This is | 238 // Changes the visibility percentage of the BlockedPopupContainer. This is |
| 232 // called while animating in or out. | 239 // called while animating in or out. |
| 233 virtual void AnimateToState(double state); | 240 virtual void AnimateToState(double state); |
| 234 | 241 |
| 235 // Overridden from notificationObserver: | 242 // Overridden from notificationObserver: |
| 236 virtual void Observe(NotificationType type, | 243 virtual void Observe(NotificationType type, |
| 237 const NotificationSource& source, | 244 const NotificationSource& source, |
| 238 const NotificationDetails& details); | 245 const NotificationDetails& details); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 void EraseDataForPopupAndUpdateUI(BlockedPopups::iterator i); | 279 void EraseDataForPopupAndUpdateUI(BlockedPopups::iterator i); |
| 273 | 280 |
| 274 // Same as above, but works on the unblocked popup list, and returns the | 281 // Same as above, but works on the unblocked popup list, and returns the |
| 275 // iterator that results from calling erase(). | 282 // iterator that results from calling erase(). |
| 276 UnblockedPopups::iterator EraseDataForPopupAndUpdateUI( | 283 UnblockedPopups::iterator EraseDataForPopupAndUpdateUI( |
| 277 UnblockedPopups::iterator i); | 284 UnblockedPopups::iterator i); |
| 278 | 285 |
| 279 // The TabContents that owns and constrains this BlockedPopupContainer. | 286 // The TabContents that owns and constrains this BlockedPopupContainer. |
| 280 TabContents* owner_; | 287 TabContents* owner_; |
| 281 | 288 |
| 289 // The PrefService we can query to find out what's on the whitelist. |
| 290 PrefService* prefs_; |
| 291 |
| 282 // Registrar to handle notifications we care about. | 292 // Registrar to handle notifications we care about. |
| 283 NotificationRegistrar registrar_; | 293 NotificationRegistrar registrar_; |
| 284 | 294 |
| 295 // The whitelisted hosts, which we allow to open popups directly. |
| 296 Whitelist whitelist_; |
| 297 |
| 285 // Information about all blocked popups. | 298 // Information about all blocked popups. |
| 286 BlockedPopups blocked_popups_; | 299 BlockedPopups blocked_popups_; |
| 287 | 300 |
| 288 // Information about all unblocked popups. | 301 // Information about all unblocked popups. |
| 289 UnblockedPopups unblocked_popups_; | 302 UnblockedPopups unblocked_popups_; |
| 290 | 303 |
| 291 // Information about all popup hosts. | 304 // Information about all popup hosts. |
| 292 PopupHosts popup_hosts_; | 305 PopupHosts popup_hosts_; |
| 293 | 306 |
| 294 // Our associated view object. | 307 // Our associated view object. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 307 // bounds while animating in or out). | 320 // bounds while animating in or out). |
| 308 gfx::Rect bounds_; | 321 gfx::Rect bounds_; |
| 309 | 322 |
| 310 // The bottom right corner of where we should appear in our parent window. | 323 // The bottom right corner of where we should appear in our parent window. |
| 311 gfx::Point anchor_point_; | 324 gfx::Point anchor_point_; |
| 312 | 325 |
| 313 DISALLOW_IMPLICIT_CONSTRUCTORS(BlockedPopupContainer); | 326 DISALLOW_IMPLICIT_CONSTRUCTORS(BlockedPopupContainer); |
| 314 }; | 327 }; |
| 315 | 328 |
| 316 #endif | 329 #endif |
| OLD | NEW |