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

Side by Side Diff: third_party/WebKit/Source/core/loader/NavigationScheduler.cpp

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 years, 6 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 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
5 * Copyright (C) 2009 Adam Barth. All rights reserved. 5 * Copyright (C) 2009 Adam Barth. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 10 *
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "core/loader/FrameLoaderStateMachine.h" 48 #include "core/loader/FrameLoaderStateMachine.h"
49 #include "core/page/Page.h" 49 #include "core/page/Page.h"
50 #include "platform/Histogram.h" 50 #include "platform/Histogram.h"
51 #include "platform/SharedBuffer.h" 51 #include "platform/SharedBuffer.h"
52 #include "platform/UserGestureIndicator.h" 52 #include "platform/UserGestureIndicator.h"
53 #include "platform/scheduler/CancellableTaskFactory.h" 53 #include "platform/scheduler/CancellableTaskFactory.h"
54 #include "public/platform/Platform.h" 54 #include "public/platform/Platform.h"
55 #include "public/platform/WebCachePolicy.h" 55 #include "public/platform/WebCachePolicy.h"
56 #include "public/platform/WebScheduler.h" 56 #include "public/platform/WebScheduler.h"
57 #include "wtf/CurrentTime.h" 57 #include "wtf/CurrentTime.h"
58 #include "wtf/PtrUtil.h"
59 #include <memory>
58 60
59 namespace blink { 61 namespace blink {
60 62
61 namespace { 63 namespace {
62 64
63 // Add new scheduled navigation types before ScheduledLastEntry 65 // Add new scheduled navigation types before ScheduledLastEntry
64 enum ScheduledNavigationType { 66 enum ScheduledNavigationType {
65 ScheduledReload, 67 ScheduledReload,
66 ScheduledFormSubmission, 68 ScheduledFormSubmission,
67 ScheduledURLNavigation, 69 ScheduledURLNavigation,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 virtual ~ScheduledNavigation() { } 115 virtual ~ScheduledNavigation() { }
114 116
115 virtual void fire(LocalFrame*) = 0; 117 virtual void fire(LocalFrame*) = 0;
116 118
117 virtual bool shouldStartTimer(LocalFrame*) { return true; } 119 virtual bool shouldStartTimer(LocalFrame*) { return true; }
118 120
119 double delay() const { return m_delay; } 121 double delay() const { return m_delay; }
120 Document* originDocument() const { return m_originDocument.get(); } 122 Document* originDocument() const { return m_originDocument.get(); }
121 bool replacesCurrentItem() const { return m_replacesCurrentItem; } 123 bool replacesCurrentItem() const { return m_replacesCurrentItem; }
122 bool isLocationChange() const { return m_isLocationChange; } 124 bool isLocationChange() const { return m_isLocationChange; }
123 PassOwnPtr<UserGestureIndicator> createUserGestureIndicator() 125 std::unique_ptr<UserGestureIndicator> createUserGestureIndicator()
124 { 126 {
125 if (m_wasUserGesture && m_userGestureToken) 127 if (m_wasUserGesture && m_userGestureToken)
126 return adoptPtr(new UserGestureIndicator(m_userGestureToken)); 128 return wrapUnique(new UserGestureIndicator(m_userGestureToken));
127 return adoptPtr(new UserGestureIndicator(DefinitelyNotProcessingUserGest ure)); 129 return wrapUnique(new UserGestureIndicator(DefinitelyNotProcessingUserGe sture));
128 } 130 }
129 131
130 DEFINE_INLINE_VIRTUAL_TRACE() 132 DEFINE_INLINE_VIRTUAL_TRACE()
131 { 133 {
132 visitor->trace(m_originDocument); 134 visitor->trace(m_originDocument);
133 } 135 }
134 136
135 protected: 137 protected:
136 void clearUserGesture() { m_wasUserGesture = false; } 138 void clearUserGesture() { m_wasUserGesture = false; }
137 139
(...skipping 12 matching lines...) Expand all
150 : ScheduledNavigation(delay, originDocument, replacesCurrentItem, isLoca tionChange) 152 : ScheduledNavigation(delay, originDocument, replacesCurrentItem, isLoca tionChange)
151 , m_url(url) 153 , m_url(url)
152 , m_shouldCheckMainWorldContentSecurityPolicy(CheckContentSecurityPolicy ) 154 , m_shouldCheckMainWorldContentSecurityPolicy(CheckContentSecurityPolicy )
153 { 155 {
154 if (ContentSecurityPolicy::shouldBypassMainWorld(originDocument)) 156 if (ContentSecurityPolicy::shouldBypassMainWorld(originDocument))
155 m_shouldCheckMainWorldContentSecurityPolicy = DoNotCheckContentSecur ityPolicy; 157 m_shouldCheckMainWorldContentSecurityPolicy = DoNotCheckContentSecur ityPolicy;
156 } 158 }
157 159
158 void fire(LocalFrame* frame) override 160 void fire(LocalFrame* frame) override
159 { 161 {
160 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat or(); 162 std::unique_ptr<UserGestureIndicator> gestureIndicator = createUserGestu reIndicator();
161 FrameLoadRequest request(originDocument(), m_url, "_self", m_shouldCheck MainWorldContentSecurityPolicy); 163 FrameLoadRequest request(originDocument(), m_url, "_self", m_shouldCheck MainWorldContentSecurityPolicy);
162 request.setReplacesCurrentItem(replacesCurrentItem()); 164 request.setReplacesCurrentItem(replacesCurrentItem());
163 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 165 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
164 166
165 ScheduledNavigationType type = isLocationChange() ? ScheduledNavigationT ype::ScheduledLocationChange : ScheduledNavigationType::ScheduledURLNavigation; 167 ScheduledNavigationType type = isLocationChange() ? ScheduledNavigationT ype::ScheduledLocationChange : ScheduledNavigationType::ScheduledURLNavigation;
166 maybeLogScheduledNavigationClobber(type, frame, request, gestureIndicato r.get()); 168 maybeLogScheduledNavigationClobber(type, frame, request, gestureIndicato r.get());
167 frame->loader().load(request); 169 frame->loader().load(request);
168 } 170 }
169 171
170 String url() const { return m_url; } 172 String url() const { return m_url; }
171 173
172 private: 174 private:
173 String m_url; 175 String m_url;
174 ContentSecurityPolicyDisposition m_shouldCheckMainWorldContentSecurityPolicy ; 176 ContentSecurityPolicyDisposition m_shouldCheckMainWorldContentSecurityPolicy ;
175 }; 177 };
176 178
177 class ScheduledRedirect final : public ScheduledURLNavigation { 179 class ScheduledRedirect final : public ScheduledURLNavigation {
178 public: 180 public:
179 static ScheduledRedirect* create(double delay, Document* originDocument, con st String& url, bool replacesCurrentItem) 181 static ScheduledRedirect* create(double delay, Document* originDocument, con st String& url, bool replacesCurrentItem)
180 { 182 {
181 return new ScheduledRedirect(delay, originDocument, url, replacesCurrent Item); 183 return new ScheduledRedirect(delay, originDocument, url, replacesCurrent Item);
182 } 184 }
183 185
184 bool shouldStartTimer(LocalFrame* frame) override { return frame->document() ->loadEventFinished(); } 186 bool shouldStartTimer(LocalFrame* frame) override { return frame->document() ->loadEventFinished(); }
185 187
186 void fire(LocalFrame* frame) override 188 void fire(LocalFrame* frame) override
187 { 189 {
188 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat or(); 190 std::unique_ptr<UserGestureIndicator> gestureIndicator = createUserGestu reIndicator();
189 FrameLoadRequest request(originDocument(), url(), "_self"); 191 FrameLoadRequest request(originDocument(), url(), "_self");
190 request.setReplacesCurrentItem(replacesCurrentItem()); 192 request.setReplacesCurrentItem(replacesCurrentItem());
191 if (equalIgnoringFragmentIdentifier(frame->document()->url(), request.re sourceRequest().url())) 193 if (equalIgnoringFragmentIdentifier(frame->document()->url(), request.re sourceRequest().url()))
192 request.resourceRequest().setCachePolicy(WebCachePolicy::ValidatingC acheData); 194 request.resourceRequest().setCachePolicy(WebCachePolicy::ValidatingC acheData);
193 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 195 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
194 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledRed irect, frame, request, gestureIndicator.get()); 196 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledRed irect, frame, request, gestureIndicator.get());
195 frame->loader().load(request); 197 frame->loader().load(request);
196 } 198 }
197 199
198 private: 200 private:
(...skipping 18 matching lines...) Expand all
217 219
218 class ScheduledReload final : public ScheduledNavigation { 220 class ScheduledReload final : public ScheduledNavigation {
219 public: 221 public:
220 static ScheduledReload* create() 222 static ScheduledReload* create()
221 { 223 {
222 return new ScheduledReload; 224 return new ScheduledReload;
223 } 225 }
224 226
225 void fire(LocalFrame* frame) override 227 void fire(LocalFrame* frame) override
226 { 228 {
227 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat or(); 229 std::unique_ptr<UserGestureIndicator> gestureIndicator = createUserGestu reIndicator();
228 ResourceRequest resourceRequest = frame->loader().resourceRequestForRelo ad(FrameLoadTypeReload, KURL(), ClientRedirectPolicy::ClientRedirect); 230 ResourceRequest resourceRequest = frame->loader().resourceRequestForRelo ad(FrameLoadTypeReload, KURL(), ClientRedirectPolicy::ClientRedirect);
229 if (resourceRequest.isNull()) 231 if (resourceRequest.isNull())
230 return; 232 return;
231 FrameLoadRequest request = FrameLoadRequest(nullptr, resourceRequest); 233 FrameLoadRequest request = FrameLoadRequest(nullptr, resourceRequest);
232 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 234 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
233 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledRel oad, frame, request, gestureIndicator.get()); 235 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledRel oad, frame, request, gestureIndicator.get());
234 frame->loader().load(request, FrameLoadTypeReload); 236 frame->loader().load(request, FrameLoadTypeReload);
235 } 237 }
236 238
237 private: 239 private:
238 ScheduledReload() 240 ScheduledReload()
239 : ScheduledNavigation(0.0, nullptr, true, true) 241 : ScheduledNavigation(0.0, nullptr, true, true)
240 { 242 {
241 } 243 }
242 }; 244 };
243 245
244 class ScheduledPageBlock final : public ScheduledURLNavigation { 246 class ScheduledPageBlock final : public ScheduledURLNavigation {
245 public: 247 public:
246 static ScheduledPageBlock* create(Document* originDocument, const String& ur l) 248 static ScheduledPageBlock* create(Document* originDocument, const String& ur l)
247 { 249 {
248 return new ScheduledPageBlock(originDocument, url); 250 return new ScheduledPageBlock(originDocument, url);
249 } 251 }
250 252
251 void fire(LocalFrame* frame) override 253 void fire(LocalFrame* frame) override
252 { 254 {
253 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat or(); 255 std::unique_ptr<UserGestureIndicator> gestureIndicator = createUserGestu reIndicator();
254 SubstituteData substituteData(SharedBuffer::create(), "text/plain", "UTF -8", KURL(), ForceSynchronousLoad); 256 SubstituteData substituteData(SharedBuffer::create(), "text/plain", "UTF -8", KURL(), ForceSynchronousLoad);
255 FrameLoadRequest request(originDocument(), url(), substituteData); 257 FrameLoadRequest request(originDocument(), url(), substituteData);
256 request.setReplacesCurrentItem(true); 258 request.setReplacesCurrentItem(true);
257 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 259 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
258 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledPag eBlock, frame, request, gestureIndicator.get()); 260 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledPag eBlock, frame, request, gestureIndicator.get());
259 frame->loader().load(request); 261 frame->loader().load(request);
260 } 262 }
261 private: 263 private:
262 ScheduledPageBlock(Document* originDocument, const String& url) 264 ScheduledPageBlock(Document* originDocument, const String& url)
263 : ScheduledURLNavigation(0.0, originDocument, url, true, true) 265 : ScheduledURLNavigation(0.0, originDocument, url, true, true)
264 { 266 {
265 } 267 }
266 268
267 }; 269 };
268 270
269 class ScheduledFormSubmission final : public ScheduledNavigation { 271 class ScheduledFormSubmission final : public ScheduledNavigation {
270 public: 272 public:
271 static ScheduledFormSubmission* create(Document* document, FormSubmission* s ubmission, bool replacesCurrentItem) 273 static ScheduledFormSubmission* create(Document* document, FormSubmission* s ubmission, bool replacesCurrentItem)
272 { 274 {
273 return new ScheduledFormSubmission(document, submission, replacesCurrent Item); 275 return new ScheduledFormSubmission(document, submission, replacesCurrent Item);
274 } 276 }
275 277
276 void fire(LocalFrame* frame) override 278 void fire(LocalFrame* frame) override
277 { 279 {
278 OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicat or(); 280 std::unique_ptr<UserGestureIndicator> gestureIndicator = createUserGestu reIndicator();
279 FrameLoadRequest frameRequest = m_submission->createFrameLoadRequest(ori ginDocument()); 281 FrameLoadRequest frameRequest = m_submission->createFrameLoadRequest(ori ginDocument());
280 frameRequest.setReplacesCurrentItem(replacesCurrentItem()); 282 frameRequest.setReplacesCurrentItem(replacesCurrentItem());
281 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledFor mSubmission, frame, frameRequest, gestureIndicator.get()); 283 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledFor mSubmission, frame, frameRequest, gestureIndicator.get());
282 frame->loader().load(frameRequest); 284 frame->loader().load(frameRequest);
283 } 285 }
284 286
285 DEFINE_INLINE_VIRTUAL_TRACE() 287 DEFINE_INLINE_VIRTUAL_TRACE()
286 { 288 {
287 visitor->trace(m_submission); 289 visitor->trace(m_submission);
288 ScheduledNavigation::trace(visitor); 290 ScheduledNavigation::trace(visitor);
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 m_redirect.clear(); 494 m_redirect.clear();
493 } 495 }
494 496
495 DEFINE_TRACE(NavigationScheduler) 497 DEFINE_TRACE(NavigationScheduler)
496 { 498 {
497 visitor->trace(m_frame); 499 visitor->trace(m_frame);
498 visitor->trace(m_redirect); 500 visitor->trace(m_redirect);
499 } 501 }
500 502
501 } // namespace blink 503 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/NavigationScheduler.h ('k') | third_party/WebKit/Source/core/loader/PingLoader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698