Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Side by Side Diff: content/browser/web_contents/aura/overscroll_navigation_overlay.cc

Issue 1874893002: Convert //content/browser from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "content/browser/web_contents/aura/overscroll_navigation_overlay.h" 5 #include "content/browser/web_contents/aura/overscroll_navigation_overlay.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 return false; 46 return false;
47 } 47 }
48 48
49 } // namespace 49 } // namespace
50 50
51 // Responsible for fading out and deleting the layer of the overlay window. 51 // Responsible for fading out and deleting the layer of the overlay window.
52 class OverlayDismissAnimator 52 class OverlayDismissAnimator
53 : public ui::LayerAnimationObserver { 53 : public ui::LayerAnimationObserver {
54 public: 54 public:
55 // Takes ownership of the layer. 55 // Takes ownership of the layer.
56 explicit OverlayDismissAnimator(scoped_ptr<ui::Layer> layer) 56 explicit OverlayDismissAnimator(std::unique_ptr<ui::Layer> layer)
57 : layer_(std::move(layer)) { 57 : layer_(std::move(layer)) {
58 CHECK(layer_.get()); 58 CHECK(layer_.get());
59 } 59 }
60 60
61 // Starts the fadeout animation on the layer. When the animation finishes, 61 // Starts the fadeout animation on the layer. When the animation finishes,
62 // the object deletes itself along with the layer. 62 // the object deletes itself along with the layer.
63 void Animate() { 63 void Animate() {
64 DCHECK(layer_.get()); 64 DCHECK(layer_.get());
65 ui::LayerAnimator* animator = layer_->GetAnimator(); 65 ui::LayerAnimator* animator = layer_->GetAnimator();
66 // This makes SetOpacity() animate with default duration (which could be 66 // This makes SetOpacity() animate with default duration (which could be
(...skipping 11 matching lines...) Expand all
78 void OnLayerAnimationAborted(ui::LayerAnimationSequence* sequence) override { 78 void OnLayerAnimationAborted(ui::LayerAnimationSequence* sequence) override {
79 delete this; 79 delete this;
80 } 80 }
81 81
82 void OnLayerAnimationScheduled( 82 void OnLayerAnimationScheduled(
83 ui::LayerAnimationSequence* sequence) override {} 83 ui::LayerAnimationSequence* sequence) override {}
84 84
85 private: 85 private:
86 ~OverlayDismissAnimator() override {} 86 ~OverlayDismissAnimator() override {}
87 87
88 scoped_ptr<ui::Layer> layer_; 88 std::unique_ptr<ui::Layer> layer_;
89 89
90 DISALLOW_COPY_AND_ASSIGN(OverlayDismissAnimator); 90 DISALLOW_COPY_AND_ASSIGN(OverlayDismissAnimator);
91 }; 91 };
92 92
93 OverscrollNavigationOverlay::OverscrollNavigationOverlay( 93 OverscrollNavigationOverlay::OverscrollNavigationOverlay(
94 WebContentsImpl* web_contents, 94 WebContentsImpl* web_contents,
95 aura::Window* web_contents_window) 95 aura::Window* web_contents_window)
96 : direction_(NONE), 96 : direction_(NONE),
97 web_contents_(web_contents), 97 web_contents_(web_contents),
98 loading_complete_(false), 98 loading_complete_(false),
(...skipping 27 matching lines...) Expand all
126 // for in-page navigations DidFirstVisuallyNonEmptyPaint() does not get 126 // for in-page navigations DidFirstVisuallyNonEmptyPaint() does not get
127 // called, and we rely on loading_complete_ for those cases. 127 // called, and we rely on loading_complete_ for those cases.
128 // If an overscroll gesture is in progress, then do not destroy the window. 128 // If an overscroll gesture is in progress, then do not destroy the window.
129 if (!window_ || !(loading_complete_ || received_paint_update_) || 129 if (!window_ || !(loading_complete_ || received_paint_update_) ||
130 owa_->is_active()) { 130 owa_->is_active()) {
131 return; 131 return;
132 } 132 }
133 133
134 // OverlayDismissAnimator deletes the dismiss layer and itself when the 134 // OverlayDismissAnimator deletes the dismiss layer and itself when the
135 // animation completes. 135 // animation completes.
136 scoped_ptr<ui::Layer> dismiss_layer = window_->AcquireLayer(); 136 std::unique_ptr<ui::Layer> dismiss_layer = window_->AcquireLayer();
137 window_.reset(); 137 window_.reset();
138 (new OverlayDismissAnimator(std::move(dismiss_layer)))->Animate(); 138 (new OverlayDismissAnimator(std::move(dismiss_layer)))->Animate();
139 Observe(nullptr); 139 Observe(nullptr);
140 received_paint_update_ = false; 140 received_paint_update_ = false;
141 loading_complete_ = false; 141 loading_complete_ = false;
142 } 142 }
143 143
144 scoped_ptr<aura::Window> OverscrollNavigationOverlay::CreateOverlayWindow( 144 std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateOverlayWindow(
145 const gfx::Rect& bounds) { 145 const gfx::Rect& bounds) {
146 UMA_HISTOGRAM_ENUMERATION( 146 UMA_HISTOGRAM_ENUMERATION(
147 "Overscroll.Started2", direction_, NAVIGATION_COUNT); 147 "Overscroll.Started2", direction_, NAVIGATION_COUNT);
148 OverscrollWindowDelegate* overscroll_delegate = new OverscrollWindowDelegate( 148 OverscrollWindowDelegate* overscroll_delegate = new OverscrollWindowDelegate(
149 owa_.get(), GetImageForDirection(direction_)); 149 owa_.get(), GetImageForDirection(direction_));
150 scoped_ptr<aura::Window> window(new aura::Window(overscroll_delegate)); 150 std::unique_ptr<aura::Window> window(new aura::Window(overscroll_delegate));
151 window->set_owned_by_parent(false); 151 window->set_owned_by_parent(false);
152 window->SetTransparent(true); 152 window->SetTransparent(true);
153 window->Init(ui::LAYER_TEXTURED); 153 window->Init(ui::LAYER_TEXTURED);
154 window->layer()->SetMasksToBounds(false); 154 window->layer()->SetMasksToBounds(false);
155 window->SetName("OverscrollOverlay"); 155 window->SetName("OverscrollOverlay");
156 web_contents_window_->AddChild(window.get()); 156 web_contents_window_->AddChild(window.get());
157 aura::Window* event_window = GetMainWindow(); 157 aura::Window* event_window = GetMainWindow();
158 if (direction_ == FORWARD) 158 if (direction_ == FORWARD)
159 web_contents_window_->StackChildAbove(window.get(), event_window); 159 web_contents_window_->StackChildAbove(window.get(), event_window);
160 else 160 else
(...skipping 14 matching lines...) Expand all
175 controller.GetEntryAtOffset(direction == FORWARD ? 1 : -1)); 175 controller.GetEntryAtOffset(direction == FORWARD ? 1 : -1));
176 176
177 if (entry && entry->screenshot().get()) { 177 if (entry && entry->screenshot().get()) {
178 std::vector<gfx::ImagePNGRep> image_reps; 178 std::vector<gfx::ImagePNGRep> image_reps;
179 image_reps.push_back(gfx::ImagePNGRep(entry->screenshot(), 1.0f)); 179 image_reps.push_back(gfx::ImagePNGRep(entry->screenshot(), 1.0f));
180 return gfx::Image(image_reps); 180 return gfx::Image(image_reps);
181 } 181 }
182 return gfx::Image(); 182 return gfx::Image();
183 } 183 }
184 184
185 scoped_ptr<aura::Window> OverscrollNavigationOverlay::CreateFrontWindow( 185 std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateFrontWindow(
186 const gfx::Rect& bounds) { 186 const gfx::Rect& bounds) {
187 if (!web_contents_->GetController().CanGoForward()) 187 if (!web_contents_->GetController().CanGoForward())
188 return nullptr; 188 return nullptr;
189 direction_ = FORWARD; 189 direction_ = FORWARD;
190 return CreateOverlayWindow(bounds); 190 return CreateOverlayWindow(bounds);
191 } 191 }
192 192
193 scoped_ptr<aura::Window> OverscrollNavigationOverlay::CreateBackWindow( 193 std::unique_ptr<aura::Window> OverscrollNavigationOverlay::CreateBackWindow(
194 const gfx::Rect& bounds) { 194 const gfx::Rect& bounds) {
195 if (!web_contents_->GetController().CanGoBack()) 195 if (!web_contents_->GetController().CanGoBack())
196 return nullptr; 196 return nullptr;
197 direction_ = BACK; 197 direction_ = BACK;
198 return CreateOverlayWindow(bounds); 198 return CreateOverlayWindow(bounds);
199 } 199 }
200 200
201 aura::Window* OverscrollNavigationOverlay::GetMainWindow() const { 201 aura::Window* OverscrollNavigationOverlay::GetMainWindow() const {
202 if (window_) 202 if (window_)
203 return window_.get(); 203 return window_.get();
204 return web_contents_->IsBeingDestroyed() 204 return web_contents_->IsBeingDestroyed()
205 ? nullptr 205 ? nullptr
206 : web_contents_->GetContentNativeView(); 206 : web_contents_->GetContentNativeView();
207 } 207 }
208 208
209 void OverscrollNavigationOverlay::OnOverscrollCompleting() { 209 void OverscrollNavigationOverlay::OnOverscrollCompleting() {
210 aura::Window* main_window = GetMainWindow(); 210 aura::Window* main_window = GetMainWindow();
211 if (!main_window) 211 if (!main_window)
212 return; 212 return;
213 main_window->ReleaseCapture(); 213 main_window->ReleaseCapture();
214 } 214 }
215 215
216 void OverscrollNavigationOverlay::OnOverscrollCompleted( 216 void OverscrollNavigationOverlay::OnOverscrollCompleted(
217 scoped_ptr<aura::Window> window) { 217 std::unique_ptr<aura::Window> window) {
218 DCHECK(direction_ != NONE); 218 DCHECK(direction_ != NONE);
219 aura::Window* main_window = GetMainWindow(); 219 aura::Window* main_window = GetMainWindow();
220 if (!main_window) { 220 if (!main_window) {
221 UMA_HISTOGRAM_ENUMERATION( 221 UMA_HISTOGRAM_ENUMERATION(
222 "Overscroll.Cancelled", direction_, NAVIGATION_COUNT); 222 "Overscroll.Cancelled", direction_, NAVIGATION_COUNT);
223 return; 223 return;
224 } 224 }
225 225
226 // Make sure we can navigate first, as other factors can trigger a navigation 226 // Make sure we can navigate first, as other factors can trigger a navigation
227 // during an overscroll gesture and navigating without history produces a 227 // during an overscroll gesture and navigating without history produces a
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 281
282 void OverscrollNavigationOverlay::DidStopLoading() { 282 void OverscrollNavigationOverlay::DidStopLoading() {
283 // Don't compare URLs in this case - it's possible they won't match if 283 // Don't compare URLs in this case - it's possible they won't match if
284 // a gesture-nav initiated navigation was interrupted by some other in-site 284 // a gesture-nav initiated navigation was interrupted by some other in-site
285 // navigation (e.g., from a script, or from a bookmark). 285 // navigation (e.g., from a script, or from a bookmark).
286 loading_complete_ = true; 286 loading_complete_ = true;
287 StopObservingIfDone(); 287 StopObservingIfDone();
288 } 288 }
289 289
290 } // namespace content 290 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698