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