Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 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 IOS_CLEAN_CHROME_BROWSER_UI_OVERLAYS_OVERLAY_SERVICE_H_ | |
| 6 #define IOS_CLEAN_CHROME_BROWSER_UI_OVERLAYS_OVERLAY_SERVICE_H_ | |
| 7 | |
| 8 #include "base/macros.h" | |
| 9 #include "components/keyed_service/core/keyed_service.h" | |
| 10 | |
| 11 namespace web { | |
| 12 class WebState; | |
| 13 } | |
| 14 | |
| 15 class Browser; | |
| 16 @class BrowserCoordinator; | |
| 17 | |
| 18 // OverlayService allows for the easy presentation and dismissal of overlay | |
|
marq (ping after 24h)
2017/06/21 09:41:54
The division of responsibilities between the Overl
kkhorimoto
2017/06/23 06:11:16
The main entry point to this overlay system is add
marq (ping after 24h)
2017/06/23 10:42:01
I don't agree that adding this service makes the n
| |
| 19 // cordinators. Overlays are modal and displayed in the order in which this | |
| 20 // service receives them. If an overlay is added to this service while one is | |
| 21 // already presented, it will be queued until that current overlay is stopped. | |
| 22 class OverlayService : public KeyedService { | |
| 23 public: | |
| 24 OverlayService() = default; | |
| 25 ~OverlayService() override = default; | |
| 26 | |
| 27 // Whether an overlay is currently displayed for |browser|. This will return | |
| 28 // true for both WebState-specific or Browser-level overlays. | |
| 29 virtual bool IsBrowserShowingOverlay(Browser* browser) const = 0; | |
| 30 | |
| 31 // Replaces |browser|'s currently-visible overlay with |overlay_coordinator|. | |
| 32 // The replacement overlay will use the visible overlays parent as its own. | |
| 33 // This will replace the current overlay regardless of if it's WebState- | |
| 34 // specific. | |
| 35 virtual void ReplaceVisibleOverlay(BrowserCoordinator* overlay_coordinator, | |
| 36 Browser* browser) = 0; | |
| 37 | |
| 38 // Cancels all scheduled overlays added to this service. If an overlay is | |
| 39 // currently visible, it will be stopped. | |
| 40 virtual void CancelOverlays() = 0; | |
| 41 | |
| 42 // Browser-specific overlays: | |
| 43 | |
| 44 // Shows |overlay_coordinator| over |parent_coordinator|'s UI. | |
| 45 virtual void ShowOverlayForBrowser(BrowserCoordinator* overlay_coordinator, | |
| 46 BrowserCoordinator* parent_coordiantor, | |
| 47 Browser* browser) = 0; | |
| 48 | |
| 49 // WebState-specific overlays: | |
| 50 | |
| 51 // Switches the active WebState to |web_state| and displays | |
| 52 // |overlay_coordinator|'s UI over it. | |
| 53 virtual void ShowOverlayForWebState(BrowserCoordinator* overlay_coordinator, | |
| 54 web::WebState* web_state) = 0; | |
| 55 | |
| 56 // Cancels all scheduled overlays for |web_state|. If a |web_state|-specific | |
| 57 // overlay is currently visible, it will be stopped. | |
| 58 virtual void CancelOverlayForWebState(web::WebState* web_state) = 0; | |
| 59 | |
| 60 // Overlays added via ShowOverlayForWebState() can only be started when their | |
| 61 // associated WebState's content are is visible. When a coordinator showing | |
| 62 // a WebState's content is started, it can notify the OverlayService to use | |
| 63 // itself as the parent for that WebState's overlays. | |
| 64 virtual void SetWebStateParentCoordinator( | |
| 65 BrowserCoordinator* parent_coordinator, | |
| 66 web::WebState* web_state) = 0; | |
| 67 | |
| 68 private: | |
| 69 DISALLOW_COPY_AND_ASSIGN(OverlayService); | |
| 70 }; | |
| 71 | |
| 72 #endif // IOS_CLEAN_CHROME_BROWSER_UI_OVERLAYS_OVERLAY_SERVICE_H_ | |
| OLD | NEW |