1/* 2 * Copyright (C) 2010 Google 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 are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#ifndef InspectorFrontendClientLocal_h 32#define InspectorFrontendClientLocal_h 33 34#include "InspectorFrontendClient.h" 35#include <wtf/Forward.h> 36#include <wtf/Noncopyable.h> 37#include <wtf/text/WTFString.h> 38 39namespace WebCore { 40 41class Frame; 42class InspectorController; 43class InspectorBackendDispatchTask; 44class InspectorFrontendHost; 45class Page; 46 47class InspectorFrontendClientLocal : public InspectorFrontendClient { 48 WTF_MAKE_NONCOPYABLE(InspectorFrontendClientLocal); WTF_MAKE_FAST_ALLOCATED; 49public: 50 class Settings { 51 public: 52 Settings() { } 53 virtual ~Settings() { } 54 virtual String getProperty(const String& name); 55 virtual void setProperty(const String& name, const String& value); 56 }; 57 58 InspectorFrontendClientLocal(InspectorController*, Page*, PassOwnPtr<Settings>); 59 virtual ~InspectorFrontendClientLocal(); 60 61 virtual void windowObjectCleared(); 62 virtual void frontendLoaded(); 63 64 virtual void moveWindowBy(float x, float y); 65 66 virtual void requestSetDockSide(DockSide); 67 virtual void changeAttachedWindowHeight(unsigned); 68 virtual void changeAttachedWindowWidth(unsigned); 69 virtual void openInNewTab(const String& url); 70 virtual bool canSave() { return false; } 71 virtual void save(const String&, const String&, bool) { } 72 virtual void append(const String&, const String&) { } 73 74 virtual void attachWindow(DockSide) = 0; 75 virtual void detachWindow() = 0; 76 77 virtual void sendMessageToBackend(const String& message); 78 79 virtual bool supportsFileSystems() { return false; } 80 virtual void requestFileSystems() { } 81 virtual void addFileSystem() { } 82 virtual void removeFileSystem(const String&) { } 83 virtual bool isUnderTest(); 84 85 bool canAttachWindow(); 86 void setDockingUnavailable(bool); 87 88 static unsigned constrainedAttachedWindowHeight(unsigned preferredHeight, unsigned totalWindowHeight); 89 static unsigned constrainedAttachedWindowWidth(unsigned preferredWidth, unsigned totalWindowWidth); 90 91 // Direct Frontend API 92 bool isDebuggingEnabled(); 93 void setDebuggingEnabled(bool); 94 95 bool isTimelineProfilingEnabled(); 96 void setTimelineProfilingEnabled(bool); 97 98 bool isProfilingJavaScript(); 99 void startProfilingJavaScript(); 100 void stopProfilingJavaScript(); 101 102 void showConsole(); 103 104 void showMainResourceForFrame(Frame*); 105 106 void showResources(); 107 108 void setAttachedWindow(DockSide); 109 110protected: 111 virtual void setAttachedWindowHeight(unsigned) = 0; 112 virtual void setAttachedWindowWidth(unsigned) = 0; 113 void restoreAttachedWindowHeight(); 114 115private: 116 bool evaluateAsBoolean(const String& expression); 117 void evaluateOnLoad(const String& expression); 118 119 friend class FrontendMenuProvider; 120 InspectorController* m_inspectorController; 121 Page* m_frontendPage; 122 // TODO(yurys): this ref shouldn't be needed. 123 RefPtr<InspectorFrontendHost> m_frontendHost; 124 OwnPtr<InspectorFrontendClientLocal::Settings> m_settings; 125 bool m_frontendLoaded; 126 DockSide m_dockSide; 127 Vector<String> m_evaluateOnLoad; 128 OwnPtr<InspectorBackendDispatchTask> m_dispatchTask; 129}; 130 131} // namespace WebCore 132 133#endif 134