Index: Source/modules/beacon/NavigatorBeacon.cpp |
diff --git a/Source/modules/beacon/NavigatorBeacon.cpp b/Source/modules/beacon/NavigatorBeacon.cpp |
index aa2ff569a29fe73f07bdbcdb377144e9363a66c8..77cc13e8a774d557f73c48ecf2684305ff9d81cb 100644 |
--- a/Source/modules/beacon/NavigatorBeacon.cpp |
+++ b/Source/modules/beacon/NavigatorBeacon.cpp |
@@ -6,6 +6,7 @@ |
#include "modules/beacon/NavigatorBeacon.h" |
#include "bindings/core/v8/ExceptionState.h" |
+#include "bindings/modules/v8/UnionTypesModules.h" |
#include "core/dom/DOMArrayBufferView.h" |
#include "core/dom/ExceptionCode.h" |
#include "core/dom/ExecutionContext.h" |
@@ -88,68 +89,30 @@ bool NavigatorBeacon::beaconResult(ExecutionContext* context, bool allowed, int |
return allowed; |
} |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, Navigator& navigator, const String& urlstring, const String& data, ExceptionState& exceptionState) |
+bool NavigatorBeacon::sendBeacon(ExecutionContext* context, Navigator& navigator, const String& urlstring, const ArrayBufferViewOrBlobOrStringOrFormData& data, ExceptionState& exceptionState) |
{ |
- return NavigatorBeacon::from(navigator).sendBeacon(context, urlstring, data, exceptionState); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, const String& urlstring, const String& data, ExceptionState& exceptionState) |
-{ |
- KURL url = context->completeURL(urlstring); |
- if (!canSendBeacon(context, url, exceptionState)) |
- return false; |
- |
- int bytes = 0; |
- bool result = BeaconLoader::sendBeacon(m_navigator.frame(), maxAllowance(), url, data, bytes); |
- return beaconResult(context, result, bytes); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, Navigator& navigator, const String& urlstring, PassRefPtr<DOMArrayBufferView> data, ExceptionState& exceptionState) |
-{ |
- return NavigatorBeacon::from(navigator).sendBeacon(context, urlstring, data, exceptionState); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, const String& urlstring, PassRefPtr<DOMArrayBufferView> data, ExceptionState& exceptionState) |
-{ |
- KURL url = context->completeURL(urlstring); |
- if (!canSendBeacon(context, url, exceptionState)) |
- return false; |
- |
- int bytes = 0; |
- bool result = BeaconLoader::sendBeacon(m_navigator.frame(), maxAllowance(), url, data->view(), bytes); |
- return beaconResult(context, result, bytes); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, Navigator& navigator, const String& urlstring, Blob* data, ExceptionState& exceptionState) |
-{ |
- return NavigatorBeacon::from(navigator).sendBeacon(context, urlstring, data, exceptionState); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, const String& urlstring, Blob* data, ExceptionState& exceptionState) |
-{ |
- KURL url = context->completeURL(urlstring); |
- if (!canSendBeacon(context, url, exceptionState)) |
- return false; |
- |
- int bytes = 0; |
- bool result = BeaconLoader::sendBeacon(m_navigator.frame(), maxAllowance(), url, data, bytes); |
- return beaconResult(context, result, bytes); |
-} |
+ NavigatorBeacon& impl = NavigatorBeacon::from(navigator); |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, Navigator& navigator, const String& urlstring, PassRefPtrWillBeRawPtr<DOMFormData> data, ExceptionState& exceptionState) |
-{ |
- return NavigatorBeacon::from(navigator).sendBeacon(context, urlstring, data, exceptionState); |
-} |
- |
-bool NavigatorBeacon::sendBeacon(ExecutionContext* context, const String& urlstring, PassRefPtrWillBeRawPtr<DOMFormData> data, ExceptionState& exceptionState) |
-{ |
KURL url = context->completeURL(urlstring); |
- if (!canSendBeacon(context, url, exceptionState)) |
+ if (!impl.canSendBeacon(context, url, exceptionState)) |
return false; |
+ int allowance = impl.maxAllowance(); |
int bytes = 0; |
- bool result = BeaconLoader::sendBeacon(m_navigator.frame(), maxAllowance(), url, data, bytes); |
- return beaconResult(context, result, bytes); |
+ bool allowed; |
+ |
+ if (data.isArrayBufferView()) |
+ allowed = BeaconLoader::sendBeacon(navigator.frame(), allowance, url, data.getAsArrayBufferView()->view(), bytes); |
+ else if (data.isBlob()) |
+ allowed = BeaconLoader::sendBeacon(navigator.frame(), allowance, url, data.getAsBlob(), bytes); |
+ else if (data.isString()) |
+ allowed = BeaconLoader::sendBeacon(navigator.frame(), allowance, url, data.getAsString(), bytes); |
+ else if (data.isFormData()) |
+ allowed = BeaconLoader::sendBeacon(navigator.frame(), allowance, url, data.getAsFormData(), bytes); |
+ else |
+ allowed = BeaconLoader::sendBeacon(navigator.frame(), allowance, url, String(), bytes); |
+ |
+ return impl.beaconResult(context, allowed, bytes); |
} |
} // namespace blink |