1 /* 2 * Copyright (C) 2006, 2007 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 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14 * its contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #import <WebCore/InspectorClient.h> 30 #import <WebCore/InspectorFrontendClientLocal.h> 31 #import <WebCore/PlatformString.h> 32 33 #import <wtf/Forward.h> 34 #import <wtf/HashMap.h> 35 #import <wtf/RetainPtr.h> 36 #import <wtf/text/StringHash.h> 37 38 #ifdef __OBJC__ 39 @class WebInspectorWindowController; 40 @class WebNodeHighlighter; 41 @class WebView; 42 #else 43 class WebInspectorWindowController; 44 class WebNodeHighlighter; 45 class WebView; 46 #endif 47 48 namespace WebCore { 49 50 class Page; 51 52 } 53 54 class WebInspectorClient : public WebCore::InspectorClient { 55 public: 56 WebInspectorClient(WebView *); 57 58 virtual void inspectorDestroyed(); 59 60 virtual void openInspectorFrontend(WebCore::InspectorController*); 61 62 virtual void highlight(WebCore::Node*); 63 virtual void hideHighlight(); 64 65 virtual bool sendMessageToFrontend(const WTF::String&); 66 67 bool inspectorStartsAttached(); 68 void setInspectorStartsAttached(bool); 69 70 void releaseFrontendPage(); 71 72 void saveSessionSetting(const String& key, const String& value); 73 void loadSessionSetting(const String& key, String* value); 74 75 private: 76 WTF::PassOwnPtr<WebCore::InspectorFrontendClientLocal::Settings> createFrontendSettings(); 77 78 WebView *m_webView; 79 RetainPtr<WebNodeHighlighter> m_highlighter; 80 WebCore::Page* m_frontendPage; 81 82 WTF::HashMap<WTF::String, WTF::String> m_sessionSettings; 83 }; 84 85 86 class WebInspectorFrontendClient : public WebCore::InspectorFrontendClientLocal { 87 public: 88 WebInspectorFrontendClient(WebView*, WebInspectorWindowController*, WebCore::InspectorController*, WebCore::Page*, WTF::PassOwnPtr<Settings>); 89 90 virtual void frontendLoaded(); 91 92 virtual WTF::String localizedStringsURL(); 93 virtual WTF::String hiddenPanels(); 94 95 virtual void bringToFront(); 96 virtual void closeWindow(); 97 virtual void disconnectFromBackend(); 98 99 virtual void attachWindow(); 100 virtual void detachWindow(); 101 102 virtual void setAttachedWindowHeight(unsigned height); 103 virtual void inspectedURLChanged(const WTF::String& newURL); 104 105 virtual void saveSessionSetting(const String& key, const String& value); 106 virtual void loadSessionSetting(const String& key, String* value); 107 108 private: 109 void updateWindowTitle() const; 110 111 WebView* m_inspectedWebView; 112 RetainPtr<WebInspectorWindowController> m_windowController; 113 WTF::String m_inspectedURL; 114 }; 115