18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> 48f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2009 Google Inc. All rights reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * notice, this list of conditions and the following disclaimer. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * documentation and/or other materials provided with the distribution. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * from this software without specific prior written permission. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#ifndef InspectorDOMStorageResource_h 328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#define InspectorDOMStorageResource_h 338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(DOM_STORAGE) 358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "EventListener.h" 3781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorFrontend.h" 388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include <wtf/PassRefPtr.h> 408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include <wtf/RefCounted.h> 418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include <wtf/RefPtr.h> 428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiannamespace WebCore { 448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class Storage; 468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class Frame; 47e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block class InspectorFrontend; 488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class InspectorDOMStorageResource : public EventListener { 508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian public: 518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian static PassRefPtr<InspectorDOMStorageResource> create(Storage* domStorage, bool isLocalStorage, Frame* frame) 528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian { 538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian return adoptRef(new InspectorDOMStorageResource(domStorage, isLocalStorage, frame)); 548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian } 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 56231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static const InspectorDOMStorageResource* cast(const EventListener* listener) 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return listener->type() == InspectorDOMStorageResourceType ? static_cast<const InspectorDOMStorageResource*>(listener) : 0; 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 61e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block void bind(InspectorFrontend* frontend); 628f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void unbind(); 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void startReportingChangesToFrontend(); 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void handleEvent(ScriptExecutionContext*, Event*); 66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool operator==(const EventListener& listener); 678f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 688f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool isSameHostAndType(Frame*, bool isLocalStorage) const; 692bde8e466a4451c7319e3a072d118917957d6554Steve Block int id() const { return m_id; } 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Storage* domStorage() const { return m_domStorage.get(); } 718f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian private: 738f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 748f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian InspectorDOMStorageResource(Storage*, bool isLocalStorage, Frame*); 758f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 768f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian RefPtr<Storage> m_domStorage; 778f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool m_isLocalStorage; 788f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian RefPtr<Frame> m_frame; 7981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorFrontend::DOMStorage* m_frontend; 802bde8e466a4451c7319e3a072d118917957d6554Steve Block int m_id; 81231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool m_reportingChangesToFrontend; 828f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 832bde8e466a4451c7319e3a072d118917957d6554Steve Block static int s_nextUnusedId; 84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project }; 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 868f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} // namespace WebCore 878f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 888f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 898f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 908f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif // InspectorDOMStorageResource_h 91