18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Apple Inc. All Rights Reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef XMLHttpRequestUpload_h
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define XMLHttpRequestUpload_h
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "EventListener.h"
30231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "EventNames.h"
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "EventTarget.h"
32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h>
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/HashMap.h>
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h>
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefPtr.h>
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/PassRefPtr.h>
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h>
38f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/AtomicStringHash.h>
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class ScriptExecutionContext;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class XMLHttpRequest;
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class XMLHttpRequestUpload : public RefCounted<XMLHttpRequestUpload>, public EventTarget {
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        static PassRefPtr<XMLHttpRequestUpload> create(XMLHttpRequest* xmlHttpRequest)
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return adoptRef(new XMLHttpRequestUpload(xmlHttpRequest));
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual XMLHttpRequestUpload* toXMLHttpRequestUpload() { return this; }
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        XMLHttpRequest* associatedXMLHttpRequest() const { return m_xmlHttpRequest; }
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void disconnectXMLHttpRequest() { m_xmlHttpRequest = 0; }
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        ScriptExecutionContext* scriptExecutionContext() const;
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        DEFINE_ATTRIBUTE_EVENT_LISTENER(abort);
60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        DEFINE_ATTRIBUTE_EVENT_LISTENER(load);
62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        DEFINE_ATTRIBUTE_EVENT_LISTENER(loadstart);
63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        DEFINE_ATTRIBUTE_EVENT_LISTENER(progress);
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        using RefCounted<XMLHttpRequestUpload>::ref;
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        using RefCounted<XMLHttpRequestUpload>::deref;
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    private:
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        XMLHttpRequestUpload(XMLHttpRequest*);
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void refEventTarget() { ref(); }
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void derefEventTarget() { deref(); }
73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        virtual EventTargetData* eventTargetData();
74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        virtual EventTargetData* ensureEventTargetData();
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        XMLHttpRequest* m_xmlHttpRequest;
77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        EventTargetData m_eventTargetData;
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // XMLHttpRequestUpload_h
83