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

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

Issue 1799253002: Stricter user gestures for touch - measure and warn (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 /* 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 unsigned NavigationDisablerForBeforeUnload::s_navigationDisableCount = 0; 57 unsigned NavigationDisablerForBeforeUnload::s_navigationDisableCount = 0;
58 58
59 class ScheduledNavigation : public GarbageCollectedFinalized<ScheduledNavigation > { 59 class ScheduledNavigation : public GarbageCollectedFinalized<ScheduledNavigation > {
60 WTF_MAKE_NONCOPYABLE(ScheduledNavigation); 60 WTF_MAKE_NONCOPYABLE(ScheduledNavigation);
61 public: 61 public:
62 ScheduledNavigation(double delay, Document* originDocument, bool replacesCur rentItem, bool isLocationChange) 62 ScheduledNavigation(double delay, Document* originDocument, bool replacesCur rentItem, bool isLocationChange)
63 : m_delay(delay) 63 : m_delay(delay)
64 , m_originDocument(originDocument) 64 , m_originDocument(originDocument)
65 , m_replacesCurrentItem(replacesCurrentItem) 65 , m_replacesCurrentItem(replacesCurrentItem)
66 , m_isLocationChange(isLocationChange) 66 , m_isLocationChange(isLocationChange)
67 , m_wasUserGesture(UserGestureIndicator::processingUserGesture()) 67 , m_wasUserGesture(UserGestureIndicator::processingUserGestureUntracked( ))
68 { 68 {
69 if (m_wasUserGesture) 69 if (m_wasUserGesture)
70 m_userGestureToken = UserGestureIndicator::currentToken(); 70 m_userGestureToken = UserGestureIndicator::currentToken();
71 } 71 }
72 virtual ~ScheduledNavigation() { } 72 virtual ~ScheduledNavigation() { }
73 73
74 virtual void fire(LocalFrame*) = 0; 74 virtual void fire(LocalFrame*) = 0;
75 75
76 virtual bool shouldStartTimer(LocalFrame*) { return true; } 76 virtual bool shouldStartTimer(LocalFrame*) { return true; }
77 77
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 299
300 // We want a new back/forward list item if the refresh timeout is > 1 second . 300 // We want a new back/forward list item if the refresh timeout is > 1 second .
301 if (!m_redirect || delay <= m_redirect->delay()) 301 if (!m_redirect || delay <= m_redirect->delay())
302 schedule(ScheduledRedirect::create(delay, m_frame->document(), url, dela y <= 1)); 302 schedule(ScheduledRedirect::create(delay, m_frame->document(), url, dela y <= 1));
303 } 303 }
304 304
305 bool NavigationScheduler::mustReplaceCurrentItem(LocalFrame* targetFrame) 305 bool NavigationScheduler::mustReplaceCurrentItem(LocalFrame* targetFrame)
306 { 306 {
307 // Non-user navigation before the page has finished firing onload should not create a new back/forward item. 307 // Non-user navigation before the page has finished firing onload should not create a new back/forward item.
308 // See https://webkit.org/b/42861 for the original motivation for this. 308 // See https://webkit.org/b/42861 for the original motivation for this.
309 if (!UserGestureIndicator::processingUserGesture() && !targetFrame->document ()->loadEventFinished()) 309 if (!targetFrame->document()->loadEventFinished() && !UserGestureIndicator:: processingUserGesture())
310 return true; 310 return true;
311 311
312 // Navigation of a subframe during loading of an ancestor frame does not cre ate a new back/forward item. 312 // Navigation of a subframe during loading of an ancestor frame does not cre ate a new back/forward item.
313 // The definition of "during load" is any time before all handlers for the l oad event have been run. 313 // The definition of "during load" is any time before all handlers for the l oad event have been run.
314 // See https://bugs.webkit.org/show_bug.cgi?id=14957 for the original motiva tion for this. 314 // See https://bugs.webkit.org/show_bug.cgi?id=14957 for the original motiva tion for this.
315 Frame* parentFrame = targetFrame->tree().parent(); 315 Frame* parentFrame = targetFrame->tree().parent();
316 return parentFrame && parentFrame->isLocalFrame() && !toLocalFrame(parentFra me)->loader().allAncestorsAreComplete(); 316 return parentFrame && parentFrame->isLocalFrame() && !toLocalFrame(parentFra me)->loader().allAncestorsAreComplete();
317 } 317 }
318 318
319 void NavigationScheduler::scheduleLocationChange(Document* originDocument, const String& url, bool replacesCurrentItem) 319 void NavigationScheduler::scheduleLocationChange(Document* originDocument, const String& url, bool replacesCurrentItem)
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 m_redirect.clear(); 431 m_redirect.clear();
432 } 432 }
433 433
434 DEFINE_TRACE(NavigationScheduler) 434 DEFINE_TRACE(NavigationScheduler)
435 { 435 {
436 visitor->trace(m_frame); 436 visitor->trace(m_frame);
437 visitor->trace(m_redirect); 437 visitor->trace(m_redirect);
438 } 438 }
439 439
440 } // namespace blink 440 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698