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*, std::unique_ptr<Settings>); 59 virtual ~InspectorFrontendClientLocal(); 60 61 virtual void windowObjectCleared() override; 62 virtual void frontendLoaded() override; 63 64 virtual void moveWindowBy(float x, float y) override; 65 66 virtual void requestSetDockSide(DockSide) override; 67 virtual void changeAttachedWindowHeight(unsigned) override; 68 virtual void changeAttachedWindowWidth(unsigned) override; 69 virtual void openInNewTab(const String& url) override; 70 virtual bool canSave() override { return false; } 71 virtual void save(const String&, const String&, bool, bool) override { } 72 virtual void append(const String&, const String&) override { } 73 74 virtual void attachWindow(DockSide) = 0; 75 virtual void detachWindow() = 0; 76 77 virtual void sendMessageToBackend(const String& message) override; 78 79 virtual bool isUnderTest() override; 80 81 bool canAttachWindow(); 82 void setDockingUnavailable(bool); 83 84 static unsigned constrainedAttachedWindowHeight(unsigned preferredHeight, unsigned totalWindowHeight); 85 static unsigned constrainedAttachedWindowWidth(unsigned preferredWidth, unsigned totalWindowWidth); 86 87 // Direct Frontend API 88 bool isDebuggingEnabled(); 89 void setDebuggingEnabled(bool); 90 91 bool isTimelineProfilingEnabled(); 92 void setTimelineProfilingEnabled(bool); 93 94 bool isProfilingJavaScript(); 95 void startProfilingJavaScript(); 96 void stopProfilingJavaScript(); 97 98 void showConsole(); 99 100 void showMainResourceForFrame(Frame*); 101 102 void showResources(); 103 104 void setAttachedWindow(DockSide); 105 106protected: 107 virtual void setAttachedWindowHeight(unsigned) = 0; 108 virtual void setAttachedWindowWidth(unsigned) = 0; 109 void restoreAttachedWindowHeight(); 110 111private: 112 bool evaluateAsBoolean(const String& expression); 113 void evaluateOnLoad(const String& expression); 114 115 friend class FrontendMenuProvider; 116 InspectorController* m_inspectorController; 117 Page* m_frontendPage; 118 // TODO(yurys): this ref shouldn't be needed. 119 RefPtr<InspectorFrontendHost> m_frontendHost; 120 std::unique_ptr<InspectorFrontendClientLocal::Settings> m_settings; 121 bool m_frontendLoaded; 122 DockSide m_dockSide; 123 Vector<String> m_evaluateOnLoad; 124 std::unique_ptr<InspectorBackendDispatchTask> m_dispatchTask; 125}; 126 127} // namespace WebCore 128 129#endif 130