OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 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 #import "ios/clean/chrome/browser/ui/overlay_service/internal/overlay_service_im
pl.h" | 5 #import "ios/clean/chrome/browser/ui/overlay_service/internal/overlay_service_im
pl.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #import "ios/chrome/browser/web_state_list/web_state_list.h" | 8 #import "ios/chrome/browser/web_state_list/web_state_list.h" |
9 #import "ios/clean/chrome/browser/ui/overlay_service/browser_coordinator+overlay
_support.h" | 9 #import "ios/clean/chrome/browser/ui/overlay_service/browser_coordinator+overlay
_support.h" |
10 #import "ios/clean/chrome/browser/ui/overlay_service/internal/browser_overlay_qu
eue.h" | 10 #import "ios/clean/chrome/browser/ui/overlay_service/internal/browser_overlay_qu
eue.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 DCHECK(overlay_coordinator); | 55 DCHECK(overlay_coordinator); |
56 DCHECK(IsBrowserShowingOverlay(browser)); | 56 DCHECK(IsBrowserShowingOverlay(browser)); |
57 OverlayScheduler::FromBrowser(browser)->ReplaceVisibleOverlay( | 57 OverlayScheduler::FromBrowser(browser)->ReplaceVisibleOverlay( |
58 overlay_coordinator); | 58 overlay_coordinator); |
59 } | 59 } |
60 | 60 |
61 void OverlayServiceImpl::ShowOverlayForWebState( | 61 void OverlayServiceImpl::ShowOverlayForWebState( |
62 BrowserCoordinator* overlay_coordinator, | 62 BrowserCoordinator* overlay_coordinator, |
63 web::WebState* web_state) { | 63 web::WebState* web_state) { |
64 DCHECK(overlay_coordinator.supportsOverlaying); | 64 DCHECK(overlay_coordinator.supportsOverlaying); |
65 WebStateOverlayQueue::FromWebState(web_state)->AddWebStateOverlay( | 65 WebStateOverlayQueue* queue = WebStateOverlayQueue::FromWebState(web_state); |
66 overlay_coordinator); | 66 if (queue) |
| 67 queue->AddWebStateOverlay(overlay_coordinator); |
67 } | 68 } |
68 | 69 |
69 void OverlayServiceImpl::SetWebStateParentCoordinator( | 70 void OverlayServiceImpl::SetWebStateParentCoordinator( |
70 BrowserCoordinator* parent_coordinator, | 71 BrowserCoordinator* parent_coordinator, |
71 web::WebState* web_state) { | 72 web::WebState* web_state) { |
72 WebStateOverlayQueue::FromWebState(web_state)->SetWebStateParentCoordinator( | 73 WebStateOverlayQueue* queue = WebStateOverlayQueue::FromWebState(web_state); |
73 parent_coordinator); | 74 if (queue) |
| 75 queue->SetWebStateParentCoordinator(parent_coordinator); |
74 } | 76 } |
75 | 77 |
76 void OverlayServiceImpl::ShowOverlayForBrowser( | 78 void OverlayServiceImpl::ShowOverlayForBrowser( |
77 BrowserCoordinator* overlay_coordinator, | 79 BrowserCoordinator* overlay_coordinator, |
78 BrowserCoordinator* parent_coordiantor, | 80 BrowserCoordinator* parent_coordiantor, |
79 Browser* browser) { | 81 Browser* browser) { |
80 DCHECK(overlay_coordinator.supportsOverlaying); | 82 DCHECK(overlay_coordinator.supportsOverlaying); |
81 BrowserOverlayQueue::FromBrowser(browser)->AddBrowserOverlay( | 83 BrowserOverlayQueue* queue = BrowserOverlayQueue::FromBrowser(browser); |
82 overlay_coordinator, parent_coordiantor); | 84 if (queue) |
| 85 queue->AddBrowserOverlay(overlay_coordinator, parent_coordiantor); |
83 } | 86 } |
84 | 87 |
85 void OverlayServiceImpl::CancelOverlays() { | 88 void OverlayServiceImpl::CancelOverlays() { |
86 for (int i = 0; i < browser_list_->count(); ++i) { | 89 for (int i = 0; i < browser_list_->count(); ++i) { |
87 OverlayScheduler::FromBrowser(browser_list_->GetBrowserAtIndex(i)) | 90 OverlayScheduler::FromBrowser(browser_list_->GetBrowserAtIndex(i)) |
88 ->CancelOverlays(); | 91 ->CancelOverlays(); |
89 } | 92 } |
90 } | 93 } |
91 | 94 |
92 void OverlayServiceImpl::CancelOverlayForWebState(web::WebState* web_state) { | 95 void OverlayServiceImpl::CancelOverlayForWebState(web::WebState* web_state) { |
93 WebStateOverlayQueue::FromWebState(web_state)->CancelOverlays(); | 96 OverlayQueue* queue = WebStateOverlayQueue::FromWebState(web_state); |
| 97 if (queue) |
| 98 queue->CancelOverlays(); |
94 } | 99 } |
95 | 100 |
96 void OverlayServiceImpl::StartSchedulerForBrowser(Browser* browser) { | 101 void OverlayServiceImpl::StartSchedulerForBrowser(Browser* browser) { |
97 OverlayScheduler::CreateForBrowser(browser); | 102 OverlayScheduler* scheduler = OverlayScheduler::FromBrowser(browser); |
| 103 if (scheduler) { |
| 104 scheduler->StartObservingBrowser(); |
| 105 } else { |
| 106 OverlayScheduler::CreateForBrowser(browser); |
| 107 } |
98 } | 108 } |
99 | 109 |
100 void OverlayServiceImpl::StopSchedulerForBrowser(Browser* browser) { | 110 void OverlayServiceImpl::StopSchedulerForBrowser(Browser* browser) { |
101 OverlayScheduler::FromBrowser(browser)->StopObservingBrowser(); | 111 OverlayScheduler::FromBrowser(browser)->StopObservingBrowser(); |
102 } | 112 } |
OLD | NEW |