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

Side by Side Diff: Source/core/page/Performance.cpp

Issue 18916003: Performance.onwebkitresourcetimingbufferfull should be a Function (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 14 matching lines...) Expand all
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 #include "config.h" 32 #include "config.h"
33 #include "core/page/Performance.h" 33 #include "core/page/Performance.h"
34 34
35 #include "bindings/v8/ScriptFunctionCall.h"
35 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
36 #include "core/loader/DocumentLoader.h" 37 #include "core/loader/DocumentLoader.h"
37 #include "core/page/MemoryInfo.h" 38 #include "core/page/MemoryInfo.h"
38 #include "core/page/PerformanceEntry.h" 39 #include "core/page/PerformanceEntry.h"
39 #include "core/page/PerformanceNavigation.h" 40 #include "core/page/PerformanceNavigation.h"
40 #include "core/page/PerformanceResourceTiming.h" 41 #include "core/page/PerformanceResourceTiming.h"
41 #include "core/page/PerformanceTiming.h" 42 #include "core/page/PerformanceTiming.h"
42 #include "core/page/PerformanceUserTiming.h" 43 #include "core/page/PerformanceUserTiming.h"
43 #include <wtf/CurrentTime.h> 44 #include <wtf/CurrentTime.h>
44 45
45 #include "core/page/Frame.h" 46 #include "core/page/Frame.h"
46 47
47 namespace WebCore { 48 namespace WebCore {
48 49
49 static const size_t defaultResourceTimingBufferSize = 150; 50 static const size_t defaultResourceTimingBufferSize = 150;
50 51
51 Performance::Performance(Frame* frame) 52 Performance::Performance(Frame* frame)
52 : DOMWindowProperty(frame) 53 : DOMWindowProperty(frame)
53 , m_resourceTimingBufferSize(defaultResourceTimingBufferSize) 54 , m_resourceTimingBufferSize(defaultResourceTimingBufferSize)
54 , m_userTiming(0) 55 , m_userTiming(0)
56 , m_onwebkitresourcetimingbufferfull(v8::Null())
55 { 57 {
56 ScriptWrappable::init(this); 58 ScriptWrappable::init(this);
57 } 59 }
58 60
59 Performance::~Performance() 61 Performance::~Performance()
60 { 62 {
61 } 63 }
62 64
63 const AtomicString& Performance::interfaceName() const
64 {
65 return eventNames().interfaceForPerformance;
66 }
67
68 ScriptExecutionContext* Performance::scriptExecutionContext() const
69 {
70 if (!frame())
71 return 0;
72 return frame()->document();
73 }
74
75 PassRefPtr<MemoryInfo> Performance::memory() const 65 PassRefPtr<MemoryInfo> Performance::memory() const
76 { 66 {
77 return MemoryInfo::create(m_frame); 67 return MemoryInfo::create(m_frame);
78 } 68 }
79 69
80 PerformanceNavigation* Performance::navigation() const 70 PerformanceNavigation* Performance::navigation() const
81 { 71 {
82 if (!m_navigation) 72 if (!m_navigation)
83 m_navigation = PerformanceNavigation::create(m_frame); 73 m_navigation = PerformanceNavigation::create(m_frame);
84 74
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 135
146 std::sort(entries.begin(), entries.end(), PerformanceEntry::startTimeCompare LessThan); 136 std::sort(entries.begin(), entries.end(), PerformanceEntry::startTimeCompare LessThan);
147 return entries; 137 return entries;
148 } 138 }
149 139
150 void Performance::webkitClearResourceTimings() 140 void Performance::webkitClearResourceTimings()
151 { 141 {
152 m_resourceTimingBuffer.clear(); 142 m_resourceTimingBuffer.clear();
153 } 143 }
154 144
155 void Performance::webkitSetResourceTimingBufferSize(unsigned size) 145 void Performance::callResourceTimingBufferFullCallback(ScriptState* scriptState)
146 {
147 if (!scriptState || m_onwebkitresourcetimingbufferfull.isNull())
148 return;
149
150 v8::HandleScope handleScope;
151 ScriptCallback callback(scriptState, m_onwebkitresourcetimingbufferfull);
152 v8::Handle<v8::Context> context = scriptState->context();
153 if (context.IsEmpty())
154 return;
155
156 v8::Context::Scope scope(context);
157 callback.call();
158 }
159
160 void Performance::webkitSetResourceTimingBufferSize(ScriptState* scriptState, un signed size)
156 { 161 {
157 m_resourceTimingBufferSize = size; 162 m_resourceTimingBufferSize = size;
158 if (isResourceTimingBufferFull()) 163 if (isResourceTimingBufferFull())
159 dispatchEvent(Event::create(eventNames().webkitresourcetimingbufferfullE vent, false, false)); 164 callResourceTimingBufferFullCallback(scriptState);
165 }
166
167 void Performance::setOnwebkitresourcetimingbufferfull(const ScriptValue& callbac k)
168 {
169 if (callback.isNull() || callback.isUndefined()) {
170 m_onwebkitresourcetimingbufferfull = ScriptValue(v8::Null());
171 return;
172 }
173
174 if (!callback.isFunction())
arv (Not doing code reviews) 2013/07/09 18:19:58 This is a bit inconsistent. WebIDL says throw a T
175 return;
176
177 m_onwebkitresourcetimingbufferfull = callback;
160 } 178 }
161 179
162 void Performance::addResourceTiming(const String& initiatorName, Document* initi atorDocument, const ResourceRequest& request, const ResourceResponse& response, double initiationTime, double finishTime) 180 void Performance::addResourceTiming(const String& initiatorName, Document* initi atorDocument, const ResourceRequest& request, const ResourceResponse& response, double initiationTime, double finishTime)
163 { 181 {
164 if (isResourceTimingBufferFull()) 182 if (isResourceTimingBufferFull())
165 return; 183 return;
166 184
167 RefPtr<PerformanceEntry> entry = PerformanceResourceTiming::create(initiator Name, request, response, initiationTime, finishTime, initiatorDocument); 185 RefPtr<PerformanceEntry> entry = PerformanceResourceTiming::create(initiator Name, request, response, initiationTime, finishTime, initiatorDocument);
168 186
169 m_resourceTimingBuffer.append(entry); 187 m_resourceTimingBuffer.append(entry);
170 188
171 if (isResourceTimingBufferFull()) 189 if (isResourceTimingBufferFull())
172 dispatchEvent(Event::create(eventNames().webkitresourcetimingbufferfullE vent, false, false)); 190 callResourceTimingBufferFullCallback(mainWorldScriptState(frame()));
173 } 191 }
174 192
175 bool Performance::isResourceTimingBufferFull() 193 bool Performance::isResourceTimingBufferFull()
176 { 194 {
177 return m_resourceTimingBuffer.size() >= m_resourceTimingBufferSize; 195 return m_resourceTimingBuffer.size() >= m_resourceTimingBufferSize;
178 } 196 }
179 197
180 EventTargetData* Performance::eventTargetData()
181 {
182 return &m_eventTargetData;
183 }
184
185 EventTargetData* Performance::ensureEventTargetData()
186 {
187 return &m_eventTargetData;
188 }
189
190 void Performance::mark(const String& markName, ExceptionCode& ec) 198 void Performance::mark(const String& markName, ExceptionCode& ec)
191 { 199 {
192 ec = 0; 200 ec = 0;
193 if (!m_userTiming) 201 if (!m_userTiming)
194 m_userTiming = UserTiming::create(this); 202 m_userTiming = UserTiming::create(this);
195 m_userTiming->mark(markName, ec); 203 m_userTiming->mark(markName, ec);
196 } 204 }
197 205
198 void Performance::clearMarks(const String& markName) 206 void Performance::clearMarks(const String& markName)
199 { 207 {
(...skipping 16 matching lines...) Expand all
216 m_userTiming = UserTiming::create(this); 224 m_userTiming = UserTiming::create(this);
217 m_userTiming->clearMeasures(measureName); 225 m_userTiming->clearMeasures(measureName);
218 } 226 }
219 227
220 double Performance::now() const 228 double Performance::now() const
221 { 229 {
222 return 1000.0 * m_frame->document()->loader()->timing()->monotonicTimeToZero BasedDocumentTime(monotonicallyIncreasingTime()); 230 return 1000.0 * m_frame->document()->loader()->timing()->monotonicTimeToZero BasedDocumentTime(monotonicallyIncreasingTime());
223 } 231 }
224 232
225 } // namespace WebCore 233 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698