| Index: third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
|
| diff --git a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
|
| index 8cf4e8baaac03c328c09dc177ad49447ef324aa9..5d84c6a9d9f8bf2598773a689072718d77289049 100644
|
| --- a/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
|
| +++ b/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
|
| @@ -22,12 +22,11 @@
|
| namespace blink {
|
|
|
| NavigatorBeacon::NavigatorBeacon(Navigator& navigator)
|
| - : ContextClient(navigator.frame()), m_transmittedBytes(0) {}
|
| + : Supplement<Navigator>(navigator), m_transmittedBytes(0) {}
|
|
|
| NavigatorBeacon::~NavigatorBeacon() {}
|
|
|
| DEFINE_TRACE(NavigatorBeacon) {
|
| - ContextClient::trace(visitor);
|
| Supplement<Navigator>::trace(visitor);
|
| }
|
|
|
| @@ -71,15 +70,15 @@ bool NavigatorBeacon::canSendBeacon(ExecutionContext* context,
|
| }
|
|
|
| // If detached from frame, do not allow sending a Beacon.
|
| - if (!frame() || !frame()->client())
|
| + if (!host()->frame())
|
| return false;
|
|
|
| return true;
|
| }
|
|
|
| int NavigatorBeacon::maxAllowance() const {
|
| - DCHECK(frame());
|
| - const Settings* settings = frame()->settings();
|
| + DCHECK(host()->frame());
|
| + const Settings* settings = host()->frame()->settings();
|
| if (settings) {
|
| int maxAllowed = settings->getMaxBeaconTransmission();
|
| if (maxAllowed < m_transmittedBytes)
|
| @@ -100,19 +99,26 @@ bool NavigatorBeacon::sendBeacon(
|
| const String& urlstring,
|
| const ArrayBufferViewOrBlobOrStringOrFormData& data,
|
| ExceptionState& exceptionState) {
|
| - NavigatorBeacon& impl = NavigatorBeacon::from(navigator);
|
| + return NavigatorBeacon::from(navigator).sendBeaconImpl(scriptState, urlstring,
|
| + data, exceptionState);
|
| +}
|
|
|
| +bool NavigatorBeacon::sendBeaconImpl(
|
| + ScriptState* scriptState,
|
| + const String& urlstring,
|
| + const ArrayBufferViewOrBlobOrStringOrFormData& data,
|
| + ExceptionState& exceptionState) {
|
| ExecutionContext* context = scriptState->getExecutionContext();
|
| KURL url = context->completeURL(urlstring);
|
| - if (!impl.canSendBeacon(context, url, exceptionState))
|
| + if (!canSendBeacon(context, url, exceptionState))
|
| return false;
|
|
|
| - int allowance = impl.maxAllowance();
|
| + int allowance = maxAllowance();
|
| int bytes = 0;
|
| bool allowed;
|
|
|
| if (data.isArrayBufferView()) {
|
| - allowed = PingLoader::sendBeacon(impl.frame(), allowance, url,
|
| + allowed = PingLoader::sendBeacon(host()->frame(), allowance, url,
|
| data.getAsArrayBufferView(), bytes);
|
| } else if (data.isBlob()) {
|
| Blob* blob = data.getAsBlob();
|
| @@ -128,20 +134,21 @@ bool NavigatorBeacon::sendBeacon(
|
| return false;
|
| }
|
| }
|
| - allowed = PingLoader::sendBeacon(impl.frame(), allowance, url, blob, bytes);
|
| + allowed =
|
| + PingLoader::sendBeacon(host()->frame(), allowance, url, blob, bytes);
|
| } else if (data.isString()) {
|
| - allowed = PingLoader::sendBeacon(impl.frame(), allowance, url,
|
| + allowed = PingLoader::sendBeacon(host()->frame(), allowance, url,
|
| data.getAsString(), bytes);
|
| } else if (data.isFormData()) {
|
| - allowed = PingLoader::sendBeacon(impl.frame(), allowance, url,
|
| + allowed = PingLoader::sendBeacon(host()->frame(), allowance, url,
|
| data.getAsFormData(), bytes);
|
| } else {
|
| - allowed =
|
| - PingLoader::sendBeacon(impl.frame(), allowance, url, String(), bytes);
|
| + allowed = PingLoader::sendBeacon(host()->frame(), allowance, url, String(),
|
| + bytes);
|
| }
|
|
|
| if (allowed) {
|
| - impl.addTransmittedBytes(bytes);
|
| + addTransmittedBytes(bytes);
|
| return true;
|
| }
|
|
|
|
|