Index: Source/core/page/Performance.cpp |
diff --git a/Source/core/page/Performance.cpp b/Source/core/page/Performance.cpp |
index 21e2e08f2c977404659524c4b80d3b020cdc8399..0fdd70a6ba4560895a29b1a2b0d17f85ce117737 100644 |
--- a/Source/core/page/Performance.cpp |
+++ b/Source/core/page/Performance.cpp |
@@ -32,6 +32,7 @@ |
#include "config.h" |
#include "core/page/Performance.h" |
+#include "bindings/v8/ScriptFunctionCall.h" |
#include "core/dom/Document.h" |
#include "core/loader/DocumentLoader.h" |
#include "core/page/MemoryInfo.h" |
@@ -52,6 +53,7 @@ Performance::Performance(Frame* frame) |
: DOMWindowProperty(frame) |
, m_resourceTimingBufferSize(defaultResourceTimingBufferSize) |
, m_userTiming(0) |
+ , m_onwebkitresourcetimingbufferfull(v8::Null()) |
{ |
ScriptWrappable::init(this); |
} |
@@ -60,18 +62,6 @@ Performance::~Performance() |
{ |
} |
-const AtomicString& Performance::interfaceName() const |
-{ |
- return eventNames().interfaceForPerformance; |
-} |
- |
-ScriptExecutionContext* Performance::scriptExecutionContext() const |
-{ |
- if (!frame()) |
- return 0; |
- return frame()->document(); |
-} |
- |
PassRefPtr<MemoryInfo> Performance::memory() const |
{ |
return MemoryInfo::create(m_frame); |
@@ -152,11 +142,39 @@ void Performance::webkitClearResourceTimings() |
m_resourceTimingBuffer.clear(); |
} |
-void Performance::webkitSetResourceTimingBufferSize(unsigned size) |
+void Performance::callResourceTimingBufferFullCallback(ScriptState* scriptState) |
+{ |
+ if (!scriptState || m_onwebkitresourcetimingbufferfull.isNull()) |
+ return; |
+ |
+ v8::HandleScope handleScope; |
+ ScriptCallback callback(scriptState, m_onwebkitresourcetimingbufferfull); |
+ v8::Handle<v8::Context> context = scriptState->context(); |
+ if (context.IsEmpty()) |
+ return; |
+ |
+ v8::Context::Scope scope(context); |
+ callback.call(); |
+} |
+ |
+void Performance::webkitSetResourceTimingBufferSize(ScriptState* scriptState, unsigned size) |
{ |
m_resourceTimingBufferSize = size; |
if (isResourceTimingBufferFull()) |
- dispatchEvent(Event::create(eventNames().webkitresourcetimingbufferfullEvent, false, false)); |
+ callResourceTimingBufferFullCallback(scriptState); |
+} |
+ |
+void Performance::setOnwebkitresourcetimingbufferfull(const ScriptValue& callback) |
+{ |
+ if (callback.isNull() || callback.isUndefined()) { |
+ m_onwebkitresourcetimingbufferfull = ScriptValue(v8::Null()); |
+ return; |
+ } |
+ |
+ if (!callback.isFunction()) |
arv (Not doing code reviews)
2013/07/09 18:19:58
This is a bit inconsistent.
WebIDL says throw a T
|
+ return; |
+ |
+ m_onwebkitresourcetimingbufferfull = callback; |
} |
void Performance::addResourceTiming(const String& initiatorName, Document* initiatorDocument, const ResourceRequest& request, const ResourceResponse& response, double initiationTime, double finishTime) |
@@ -169,7 +187,7 @@ void Performance::addResourceTiming(const String& initiatorName, Document* initi |
m_resourceTimingBuffer.append(entry); |
if (isResourceTimingBufferFull()) |
- dispatchEvent(Event::create(eventNames().webkitresourcetimingbufferfullEvent, false, false)); |
+ callResourceTimingBufferFullCallback(mainWorldScriptState(frame())); |
} |
bool Performance::isResourceTimingBufferFull() |
@@ -177,16 +195,6 @@ bool Performance::isResourceTimingBufferFull() |
return m_resourceTimingBuffer.size() >= m_resourceTimingBufferSize; |
} |
-EventTargetData* Performance::eventTargetData() |
-{ |
- return &m_eventTargetData; |
-} |
- |
-EventTargetData* Performance::ensureEventTargetData() |
-{ |
- return &m_eventTargetData; |
-} |
- |
void Performance::mark(const String& markName, ExceptionCode& ec) |
{ |
ec = 0; |