1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2007 Apple Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * are met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 1. Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 2. Redistributions in binary form must reproduce the above copyright 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer in the 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * documentation and/or other materials provided with the distribution. 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * its contributors may be used to endorse or promote products derived 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * from this software without specific prior written permission. 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef InspectorFrontendHost_h 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define InspectorFrontendHost_h 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "Console.h" 33d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "ContextMenu.h" 34d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "ContextMenuProvider.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "PlatformString.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/RefCounted.h> 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/Vector.h> 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass ContextMenuItem; 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Event; 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass FrontendMenuProvider; 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass InspectorClient; 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass InspectorFrontendClient; 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass Node; 4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass Page; 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass InspectorFrontendHost : public RefCounted<InspectorFrontendHost> 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic: 53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static PassRefPtr<InspectorFrontendHost> create(InspectorFrontendClient* client, Page* frontendPage) 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return adoptRef(new InspectorFrontendHost(client, frontendPage)); 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ~InspectorFrontendHost(); 59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void disconnectClient(); 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void loaded(); 62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void requestAttachWindow(); 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void requestDetachWindow(); 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void closeWindow(); 655abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick void disconnectFromBackend(); 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void bringToFront(); 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void inspectedURLChanged(const String&); 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setAttachedWindowHeight(unsigned height); 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void moveWindowBy(float x, float y) const; 71db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block void setExtensionAPI(const String& script); 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String localizedStringsURL(); 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String hiddenPanels(); 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 76d0825bca7fe65beaee391d30da42e937db621564Steve Block void copyText(const String& text); 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 782bde8e466a4451c7319e3a072d118917957d6554Steve Block void saveSessionSetting(const String& key, const String& value); 792bde8e466a4451c7319e3a072d118917957d6554Steve Block String loadSessionSetting(const String& key); 802bde8e466a4451c7319e3a072d118917957d6554Steve Block 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Called from [Custom] implementations. 82d0825bca7fe65beaee391d30da42e937db621564Steve Block void showContextMenu(Event*, const Vector<ContextMenuItem*>& items); 830617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen void sendMessageToBackend(const String& message); 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate: 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(CONTEXT_MENUS) 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block friend class FrontendMenuProvider; 88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendHost(InspectorFrontendClient* client, Page* frontendPage); 90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendClient* m_client; 92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Page* m_frontendPage; 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(CONTEXT_MENUS) 94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block FrontendMenuProvider* m_menuProvider; 95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebCore 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif // !defined(InspectorFrontendHost_h) 101