Web Inspector: Remove leftover 'device metrics' code
[WebKit-https.git] / Source / WebCore / inspector / InspectorPageAgent.h
1 /*
2  * Copyright (C) 2011 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 InspectorPageAgent_h
32 #define InspectorPageAgent_h
33
34 #if ENABLE(INSPECTOR)
35
36 #include "DeviceOrientationData.h"
37 #include "GeolocationPosition.h"
38 #include "InspectorWebAgentBase.h"
39 #include "InspectorWebBackendDispatchers.h"
40 #include "InspectorWebFrontendDispatchers.h"
41 #include "IntSize.h"
42 #include "LayoutRect.h"
43 #include <wtf/HashMap.h>
44 #include <wtf/RefCounted.h>
45 #include <wtf/Vector.h>
46 #include <wtf/text/WTFString.h>
47
48 namespace Inspector {
49 class InspectorArray;
50 class InspectorObject;
51 }
52
53 namespace WebCore {
54
55 class CachedResource;
56 class DOMWrapperWorld;
57 class DocumentLoader;
58 class Frame;
59 class Frontend;
60 class GraphicsContext;
61 class InjectedScriptManager;
62 class InspectorAgent;
63 class InspectorClient;
64 class InspectorOverlay;
65 class InstrumentingAgents;
66 class URL;
67 class Page;
68 class RegularExpression;
69 class SharedBuffer;
70 class TextResourceDecoder;
71
72 typedef String ErrorString;
73
74 class InspectorPageAgent : public InspectorAgentBase, public Inspector::InspectorPageBackendDispatcherHandler {
75     WTF_MAKE_NONCOPYABLE(InspectorPageAgent);
76 public:
77     enum ResourceType {
78         DocumentResource,
79         StylesheetResource,
80         ImageResource,
81         FontResource,
82         ScriptResource,
83         XHRResource,
84         WebSocketResource,
85         OtherResource
86     };
87
88     static PassOwnPtr<InspectorPageAgent> create(InstrumentingAgents*, Page*, InspectorAgent*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
89
90     static bool cachedResourceContent(CachedResource*, String* result, bool* base64Encoded);
91     static bool sharedBufferContent(PassRefPtr<SharedBuffer>, const String& textEncodingName, bool withBase64Encode, String* result);
92     static void resourceContent(ErrorString*, Frame*, const URL&, String* result, bool* base64Encoded);
93     static String sourceMapURLForResource(CachedResource*);
94
95     static PassRefPtr<SharedBuffer> resourceData(Frame*, const URL&, String* textEncodingName);
96     static CachedResource* cachedResource(Frame*, const URL&);
97     static Inspector::TypeBuilder::Page::ResourceType::Enum resourceTypeJson(ResourceType);
98     static ResourceType cachedResourceType(const CachedResource&);
99     static Inspector::TypeBuilder::Page::ResourceType::Enum cachedResourceTypeJson(const CachedResource&);
100
101     // Page API for InspectorFrontend
102     virtual void enable(ErrorString*);
103     virtual void disable(ErrorString*);
104     virtual void addScriptToEvaluateOnLoad(ErrorString*, const String& source, String* result);
105     virtual void removeScriptToEvaluateOnLoad(ErrorString*, const String& identifier);
106     virtual void reload(ErrorString*, const bool* optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad, const String* optionalScriptPreprocessor);
107     virtual void navigate(ErrorString*, const String& url);
108     virtual void getCookies(ErrorString*, RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Page::Cookie>>& cookies);
109     virtual void deleteCookie(ErrorString*, const String& cookieName, const String& url);
110     virtual void getResourceTree(ErrorString*, RefPtr<Inspector::TypeBuilder::Page::FrameResourceTree>&);
111     virtual void getResourceContent(ErrorString*, const String& frameId, const String& url, String* content, bool* base64Encoded);
112     virtual void searchInResource(ErrorString*, const String& frameId, const String& url, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::GenericTypes::SearchMatch>>&);
113     virtual void searchInResources(ErrorString*, const String&, const bool* caseSensitive, const bool* isRegex, RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Page::SearchResult>>&);
114     virtual void setDocumentContent(ErrorString*, const String& frameId, const String& html);
115     virtual void setShowPaintRects(ErrorString*, bool show);
116     virtual void canShowDebugBorders(ErrorString*, bool*);
117     virtual void setShowDebugBorders(ErrorString*, bool show);
118     virtual void canShowFPSCounter(ErrorString*, bool*);
119     virtual void setShowFPSCounter(ErrorString*, bool show);
120     virtual void canContinuouslyPaint(ErrorString*, bool*);
121     virtual void setContinuousPaintingEnabled(ErrorString*, bool enabled);
122     virtual void getScriptExecutionStatus(ErrorString*, Inspector::InspectorPageBackendDispatcherHandler::Result::Enum*);
123     virtual void setScriptExecutionDisabled(ErrorString*, bool);
124     virtual void setGeolocationOverride(ErrorString*, const double*, const double*, const double*);
125     virtual void clearGeolocationOverride(ErrorString*);
126     virtual void canOverrideGeolocation(ErrorString*, bool* out_param);
127     virtual void setDeviceOrientationOverride(ErrorString*, double, double, double);
128     virtual void clearDeviceOrientationOverride(ErrorString*);
129     virtual void canOverrideDeviceOrientation(ErrorString*, bool*);
130     virtual void setTouchEmulationEnabled(ErrorString*, bool);
131     virtual void setEmulatedMedia(ErrorString*, const String&);
132     virtual void getCompositingBordersVisible(ErrorString*, bool* out_param);
133     virtual void setCompositingBordersVisible(ErrorString*, bool);
134     virtual void snapshotNode(ErrorString*, int nodeId, String* outDataURL);
135     virtual void snapshotRect(ErrorString*, int x, int y, int width, int height, const String& coordinateSystem, String* outDataURL);
136     virtual void handleJavaScriptDialog(ErrorString*, bool accept, const String* promptText);
137     virtual void archive(ErrorString*, String* data);
138
139     // Geolocation override helpers.
140     GeolocationPosition* overrideGeolocationPosition(GeolocationPosition*);
141
142     // DeviceOrientation helper
143     DeviceOrientationData* overrideDeviceOrientation(DeviceOrientationData*);
144
145     // InspectorInstrumentation API
146     void didClearWindowObjectInWorld(Frame*, DOMWrapperWorld&);
147     void domContentEventFired();
148     void loadEventFired();
149     void frameNavigated(DocumentLoader*);
150     void frameDetached(Frame*);
151     void loaderDetachedFromFrame(DocumentLoader*);
152     void frameStartedLoading(Frame*);
153     void frameStoppedLoading(Frame*);
154     void frameScheduledNavigation(Frame*, double delay);
155     void frameClearedScheduledNavigation(Frame*);
156     void willRunJavaScriptDialog(const String& message);
157     void didRunJavaScriptDialog();
158     void applyEmulatedMedia(String*);
159     void didPaint(GraphicsContext*, const LayoutRect&);
160     void didLayout();
161     void didScroll();
162     void didRecalculateStyle();
163     void scriptsEnabled(bool isEnabled);
164
165     // Inspector Controller API
166     virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) OVERRIDE;
167     virtual void willDestroyFrontendAndBackend() OVERRIDE;
168
169     // Cross-agents API
170     Page* page() { return m_page; }
171     Frame* mainFrame();
172     String createIdentifier();
173     Frame* frameForId(const String& frameId);
174     String frameId(Frame*);
175     bool hasIdForFrame(Frame*) const;
176     String loaderId(DocumentLoader*);
177     Frame* findFrameWithSecurityOrigin(const String& originRawString);
178     Frame* assertFrame(ErrorString*, const String& frameId);
179     String scriptPreprocessor() { return m_scriptPreprocessor; }
180     static DocumentLoader* assertDocumentLoader(ErrorString*, Frame*);
181
182 private:
183     InspectorPageAgent(InstrumentingAgents*, Page*, InspectorAgent*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
184 #if ENABLE(TOUCH_EVENTS)
185     void updateTouchEventEmulationInPage(bool);
186 #endif
187
188     static bool mainResourceContent(Frame*, bool withBase64Encode, String* result);
189     static bool dataContent(const char* data, unsigned size, const String& textEncodingName, bool withBase64Encode, String* result);
190
191     PassRefPtr<Inspector::TypeBuilder::Page::Frame> buildObjectForFrame(Frame*);
192     PassRefPtr<Inspector::TypeBuilder::Page::FrameResourceTree> buildObjectForFrameTree(Frame*);
193     Page* m_page;
194     InspectorAgent* m_inspectorAgent;
195     InjectedScriptManager* m_injectedScriptManager;
196     InspectorClient* m_client;
197     std::unique_ptr<Inspector::InspectorPageFrontendDispatcher> m_frontendDispatcher;
198     RefPtr<Inspector::InspectorPageBackendDispatcher> m_backendDispatcher;
199     InspectorOverlay* m_overlay;
200     long m_lastScriptIdentifier;
201     String m_pendingScriptToEvaluateOnLoadOnce;
202     String m_scriptToEvaluateOnLoadOnce;
203     String m_pendingScriptPreprocessor;
204     String m_scriptPreprocessor;
205     HashMap<Frame*, String> m_frameToIdentifier;
206     HashMap<String, Frame*> m_identifierToFrame;
207     HashMap<DocumentLoader*, String> m_loaderToIdentifier;
208     bool m_enabled;
209     bool m_isFirstLayoutAfterOnLoad;
210     bool m_originalScriptExecutionDisabled;
211     bool m_geolocationOverridden;
212     bool m_ignoreScriptsEnabledNotification;
213     bool m_showPaintRects;
214     String m_emulatedMedia;
215     RefPtr<Inspector::InspectorObject> m_scriptsToEvaluateOnLoad;
216     RefPtr<GeolocationPosition> m_geolocationPosition;
217     RefPtr<GeolocationPosition> m_platformGeolocationPosition;
218     RefPtr<DeviceOrientationData> m_deviceOrientation;
219 };
220
221
222 } // namespace WebCore
223
224 #endif // ENABLE(INSPECTOR)
225
226 #endif // !defined(InspectorPagerAgent_h)