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 12 namespace WTF { 13 class ArrayBufferView; 14 } 15 16 namespace blink { 17 18 class Blob; 19 class DOMFormData; 20 class KURL; 21 class LocalFrame; 22 23 // Issue asynchronous beacon transmission loads independent of LocalFrame 24 // staying alive. PingLoader providing the service. 25 class BeaconLoader FINAL : public PingLoader { 26 WTF_MAKE_NONCOPYABLE(BeaconLoader); 27 WTF_MAKE_FAST_ALLOCATED; 28 public: 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 36 private: 37 static void prepareRequest(LocalFrame*, ResourceRequest&); 38 static void issueRequest(LocalFrame*, ResourceRequest&); 39 }; 40 41 } // namespace blink 42 43 #endif // BeaconLoader_h 44