| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H_ | 5 #ifndef CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H_ |
| 6 #define CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H_ | 6 #define CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.h" | 10 #include "chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.h" |
| 11 #include "content/public/browser/notification_observer.h" | 11 #include "content/public/browser/notification_observer.h" |
| 12 #include "content/public/browser/notification_registrar.h" | 12 #include "content/public/browser/notification_registrar.h" |
| 13 | 13 |
| 14 class Browser; | |
| 15 class BrowserWindow; | |
| 16 class ExclusiveAccessManager; | 14 class ExclusiveAccessManager; |
| 17 class GURL; | 15 class GURL; |
| 18 class Profile; | 16 class Profile; |
| 19 | 17 |
| 20 namespace content { | 18 namespace content { |
| 21 class WebContents; | 19 class WebContents; |
| 22 } | 20 } |
| 23 | 21 |
| 24 // The base class for the different exclusive access controllers like the | 22 // The base class for the different exclusive access controllers like the |
| 25 // FullscreenController, and MouseLockController which controls lifetime for | 23 // FullscreenController, and MouseLockController which controls lifetime for |
| 26 // which the resource (screen/mouse) is held exclusively. | 24 // which the resource (screen/mouse) is held exclusively. |
| 27 class ExclusiveAccessControllerBase : public content::NotificationObserver { | 25 class ExclusiveAccessControllerBase : public content::NotificationObserver { |
| 28 public: | 26 public: |
| 29 explicit ExclusiveAccessControllerBase(ExclusiveAccessManager* manager, | 27 explicit ExclusiveAccessControllerBase(ExclusiveAccessManager* manager); |
| 30 Browser* browser); | |
| 31 ~ExclusiveAccessControllerBase() override; | 28 ~ExclusiveAccessControllerBase() override; |
| 32 | 29 |
| 33 GURL GetExclusiveAccessBubbleURL() const; | 30 GURL GetExclusiveAccessBubbleURL() const; |
| 34 virtual GURL GetURLForExclusiveAccessBubble() const; | 31 virtual GURL GetURLForExclusiveAccessBubble() const; |
| 35 | 32 |
| 36 content::WebContents* exclusive_access_tab() const { | 33 content::WebContents* exclusive_access_tab() const { |
| 37 return tab_with_exclusive_access_; | 34 return tab_with_exclusive_access_; |
| 38 } | 35 } |
| 39 | 36 |
| 40 // Functions implemented by derived classes: | 37 // Functions implemented by derived classes: |
| (...skipping 25 matching lines...) Expand all Loading... |
| 66 // access. | 63 // access. |
| 67 void Observe(int type, | 64 void Observe(int type, |
| 68 const content::NotificationSource& source, | 65 const content::NotificationSource& source, |
| 69 const content::NotificationDetails& details) override; | 66 const content::NotificationDetails& details) override; |
| 70 | 67 |
| 71 protected: | 68 protected: |
| 72 void SetTabWithExclusiveAccess(content::WebContents* tab); | 69 void SetTabWithExclusiveAccess(content::WebContents* tab); |
| 73 | 70 |
| 74 ExclusiveAccessManager* exclusive_access_manager() const { return manager_; } | 71 ExclusiveAccessManager* exclusive_access_manager() const { return manager_; } |
| 75 | 72 |
| 76 Browser* browser() const { return browser_; } | |
| 77 | |
| 78 Profile* profile() const { return profile_; } | |
| 79 | |
| 80 // Exits exclusive access mode for the tab if currently exclusive. | 73 // Exits exclusive access mode for the tab if currently exclusive. |
| 81 virtual void ExitExclusiveAccessIfNecessary() = 0; | 74 virtual void ExitExclusiveAccessIfNecessary() = 0; |
| 82 | 75 |
| 83 // Notifies the tab that it has been forced out of exclusive access mode | 76 // Notifies the tab that it has been forced out of exclusive access mode |
| 84 // if necessary. | 77 // if necessary. |
| 85 virtual void NotifyTabExclusiveAccessLost() = 0; | 78 virtual void NotifyTabExclusiveAccessLost() = 0; |
| 86 | 79 |
| 87 private: | 80 private: |
| 88 void UpdateNotificationRegistrations(); | 81 void UpdateNotificationRegistrations(); |
| 89 | 82 |
| 90 ExclusiveAccessManager* const manager_; | 83 ExclusiveAccessManager* const manager_; |
| 91 Browser* const browser_; | |
| 92 Profile* const profile_; | |
| 93 | 84 |
| 94 content::NotificationRegistrar registrar_; | 85 content::NotificationRegistrar registrar_; |
| 95 | 86 |
| 96 content::WebContents* tab_with_exclusive_access_; | 87 content::WebContents* tab_with_exclusive_access_; |
| 97 | 88 |
| 98 DISALLOW_COPY_AND_ASSIGN(ExclusiveAccessControllerBase); | 89 DISALLOW_COPY_AND_ASSIGN(ExclusiveAccessControllerBase); |
| 99 }; | 90 }; |
| 100 | 91 |
| 101 #endif // CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H
_ | 92 #endif // CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTROLLER_BASE_H
_ |
| OLD | NEW |