1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef BeaconLoader_h 6#define BeaconLoader_h 7 8#include "core/loader/PingLoader.h" 9#include "platform/heap/Handle.h" 10#include "wtf/Noncopyable.h" 11 12namespace WTF { 13class ArrayBufferView; 14} 15 16namespace blink { 17 18class Blob; 19class DOMFormData; 20class KURL; 21class LocalFrame; 22 23// Issue asynchronous beacon transmission loads independent of LocalFrame 24// staying alive. PingLoader providing the service. 25class BeaconLoader FINAL : public PingLoader { 26 WTF_MAKE_NONCOPYABLE(BeaconLoader); 27 WTF_MAKE_FAST_ALLOCATED; 28public: 29 virtual ~BeaconLoader() { } 30 31 static bool sendBeacon(LocalFrame*, int, const KURL&, const String&, int&); 32 static bool sendBeacon(LocalFrame*, int, const KURL&, PassRefPtr<WTF::ArrayBufferView>&, int&); 33 static bool sendBeacon(LocalFrame*, int, const KURL&, PassRefPtrWillBeRawPtr<Blob>&, int&); 34 static bool sendBeacon(LocalFrame*, int, const KURL&, PassRefPtrWillBeRawPtr<DOMFormData>&, int&); 35 36private: 37 static void prepareRequest(LocalFrame*, ResourceRequest&); 38 static void issueRequest(LocalFrame*, ResourceRequest&); 39}; 40 41} // namespace blink 42 43#endif // BeaconLoader_h 44