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

Side by Side Diff: third_party/WebKit/Source/core/events/DOMWindowEventQueue.cpp

Issue 2658583006: scheduler: Make DOM window event tasks unthrottled (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/frame/DOMTimer.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All Rights Reserved. 2 * Copyright (C) 2010 Google Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 * 24 *
25 */ 25 */
26 26
27 #include "core/events/DOMWindowEventQueue.h" 27 #include "core/events/DOMWindowEventQueue.h"
28 28
29 #include "core/dom/TaskRunnerHelper.h"
29 #include "core/events/Event.h" 30 #include "core/events/Event.h"
30 #include "core/frame/LocalDOMWindow.h" 31 #include "core/frame/LocalDOMWindow.h"
31 #include "core/frame/SuspendableTimer.h" 32 #include "core/frame/SuspendableTimer.h"
32 #include "core/inspector/InspectorInstrumentation.h" 33 #include "core/inspector/InspectorInstrumentation.h"
33 34
34 namespace blink { 35 namespace blink {
35 36
36 class DOMWindowEventQueueTimer final 37 class DOMWindowEventQueueTimer final
37 : public GarbageCollectedFinalized<DOMWindowEventQueueTimer>, 38 : public GarbageCollectedFinalized<DOMWindowEventQueueTimer>,
38 public SuspendableTimer { 39 public SuspendableTimer {
39 USING_GARBAGE_COLLECTED_MIXIN(DOMWindowEventQueueTimer); 40 USING_GARBAGE_COLLECTED_MIXIN(DOMWindowEventQueueTimer);
40 WTF_MAKE_NONCOPYABLE(DOMWindowEventQueueTimer); 41 WTF_MAKE_NONCOPYABLE(DOMWindowEventQueueTimer);
41 42
42 public: 43 public:
43 DOMWindowEventQueueTimer(DOMWindowEventQueue* eventQueue, 44 DOMWindowEventQueueTimer(DOMWindowEventQueue* eventQueue,
44 ExecutionContext* context) 45 ExecutionContext* context)
45 : SuspendableTimer(context), m_eventQueue(eventQueue) {} 46 // This queue is unthrottled because throttling IndexedDB events may break
47 // scenarios where several tabs, some of which are backgrounded, access
48 // the same database concurrently.
49 : SuspendableTimer(context, TaskType::Unthrottled),
50 m_eventQueue(eventQueue) {}
46 51
47 // Eager finalization is needed to promptly stop this timer object. 52 // Eager finalization is needed to promptly stop this timer object.
48 // (see DOMTimer comment for more.) 53 // (see DOMTimer comment for more.)
49 EAGERLY_FINALIZE(); 54 EAGERLY_FINALIZE();
50 DEFINE_INLINE_VIRTUAL_TRACE() { 55 DEFINE_INLINE_VIRTUAL_TRACE() {
51 visitor->trace(m_eventQueue); 56 visitor->trace(m_eventQueue);
52 SuspendableTimer::trace(visitor); 57 SuspendableTimer::trace(visitor);
53 } 58 }
54 59
55 private: 60 private:
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 EventTarget* eventTarget = event->target(); 145 EventTarget* eventTarget = event->target();
141 InspectorInstrumentation::AsyncTask asyncTask( 146 InspectorInstrumentation::AsyncTask asyncTask(
142 eventTarget->getExecutionContext(), event); 147 eventTarget->getExecutionContext(), event);
143 if (LocalDOMWindow* window = eventTarget->toLocalDOMWindow()) 148 if (LocalDOMWindow* window = eventTarget->toLocalDOMWindow())
144 window->dispatchEvent(event, nullptr); 149 window->dispatchEvent(event, nullptr);
145 else 150 else
146 eventTarget->dispatchEvent(event); 151 eventTarget->dispatchEvent(event);
147 } 152 }
148 153
149 } // namespace blink 154 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/frame/DOMTimer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698