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 #import "ios/clean/chrome/browser/ui/overlay_service/internal/browser_overlay_qu
eue.h" |
| 6 |
| 7 #include "base/logging.h" |
| 8 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator.h" |
| 9 |
| 10 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 11 #error "This file requires ARC support." |
| 12 #endif |
| 13 |
| 14 DEFINE_BROWSER_USER_DATA_KEY(BrowserOverlayQueue); |
| 15 |
| 16 BrowserOverlayQueue::BrowserOverlayQueue(Browser* browser) |
| 17 : overlay_parents_([[NSMutableArray alloc] init]) {} |
| 18 |
| 19 BrowserOverlayQueue::~BrowserOverlayQueue() {} |
| 20 |
| 21 void BrowserOverlayQueue::StartNextOverlay() { |
| 22 DCHECK(HasQueuedOverlays()); |
| 23 DCHECK_EQ(GetCount(), [overlay_parents_ count]); |
| 24 DCHECK(!IsShowingOverlay()); |
| 25 [GetFirstOverlay() startOverlayingCoordinator:[overlay_parents_ firstObject]]; |
| 26 OverlayWasStarted(); |
| 27 } |
| 28 |
| 29 void BrowserOverlayQueue::ReplaceVisibleOverlay( |
| 30 BrowserCoordinator* overlay_coordinator) { |
| 31 DCHECK(IsShowingOverlay()); |
| 32 // Prepend the current overlay's parent to |overlay_parents_| so that the |
| 33 // replacement overlay can also use that as its parents. |
| 34 [overlay_parents_ addObject:[overlay_parents_ firstObject]]; |
| 35 OverlayQueue::ReplaceVisibleOverlay(overlay_coordinator); |
| 36 } |
| 37 |
| 38 void BrowserOverlayQueue::OverlayWasStopped( |
| 39 BrowserCoordinator* overlay_coordinator) { |
| 40 DCHECK_EQ(GetFirstOverlay(), overlay_coordinator); |
| 41 [overlay_parents_ removeObjectAtIndex:0]; |
| 42 OverlayQueue::OverlayWasStopped(overlay_coordinator); |
| 43 } |
| 44 |
| 45 void BrowserOverlayQueue::AddBrowserOverlay( |
| 46 BrowserCoordinator* overlay_coordinator, |
| 47 BrowserCoordinator* overlay_parent) { |
| 48 DCHECK(overlay_coordinator); |
| 49 DCHECK(overlay_parent); |
| 50 [overlay_parents_ addObject:overlay_parent]; |
| 51 OverlayQueue::AddOverlay(overlay_coordinator); |
| 52 } |
OLD | NEW |