Home | History | Annotate | Download | only in appcache
      1 /*
      2  * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef ApplicationCache_h
     27 #define ApplicationCache_h
     28 
     29 #include "core/events/EventTarget.h"
     30 #include "core/loader/appcache/ApplicationCacheHost.h"
     31 #include "core/frame/DOMWindowProperty.h"
     32 #include "platform/heap/Handle.h"
     33 #include "wtf/Forward.h"
     34 #include "wtf/PassRefPtr.h"
     35 #include "wtf/RefCounted.h"
     36 
     37 namespace blink {
     38 
     39 class ExceptionState;
     40 class LocalFrame;
     41 
     42 class ApplicationCache FINAL : public RefCountedWillBeGarbageCollectedFinalized<ApplicationCache>, public EventTargetWithInlineData, public DOMWindowProperty {
     43     DEFINE_WRAPPERTYPEINFO();
     44     REFCOUNTED_EVENT_TARGET(ApplicationCache);
     45     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ApplicationCache);
     46 public:
     47     static PassRefPtrWillBeRawPtr<ApplicationCache> create(LocalFrame* frame)
     48     {
     49         return adoptRefWillBeNoop(new ApplicationCache(frame));
     50     }
     51     virtual ~ApplicationCache()
     52     {
     53 #if !ENABLE(OILPAN)
     54         ASSERT(!m_frame);
     55 #endif
     56     }
     57 
     58     virtual void willDestroyGlobalObjectInFrame() OVERRIDE;
     59 
     60     unsigned short status() const;
     61     void update(ExceptionState&);
     62     void swapCache(ExceptionState&);
     63     void abort();
     64 
     65     // Explicitly named attribute event listener helpers
     66 
     67     DEFINE_ATTRIBUTE_EVENT_LISTENER(checking);
     68     DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
     69     DEFINE_ATTRIBUTE_EVENT_LISTENER(noupdate);
     70     DEFINE_ATTRIBUTE_EVENT_LISTENER(downloading);
     71     DEFINE_ATTRIBUTE_EVENT_LISTENER(progress);
     72     DEFINE_ATTRIBUTE_EVENT_LISTENER(updateready);
     73     DEFINE_ATTRIBUTE_EVENT_LISTENER(cached);
     74     DEFINE_ATTRIBUTE_EVENT_LISTENER(obsolete);
     75 
     76     virtual const AtomicString& interfaceName() const OVERRIDE;
     77     virtual ExecutionContext* executionContext() const OVERRIDE;
     78 
     79     static const AtomicString& toEventType(ApplicationCacheHost::EventID);
     80 
     81     virtual void trace(Visitor*) OVERRIDE;
     82 
     83 private:
     84     explicit ApplicationCache(LocalFrame*);
     85 
     86     ApplicationCacheHost* applicationCacheHost() const;
     87 };
     88 
     89 } // namespace blink
     90 
     91 #endif // ApplicationCache_h
     92