15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Redistributions of source code must retain the above copyright
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Redistributions in binary form must reproduce the above
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Neither the name of Google Inc. nor the names of its
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef InspectorPageAgent_h
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define InspectorPageAgent_h
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
355d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/InspectorFrontend.h"
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorBaseAgent.h"
3776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "core/inspector/InspectorResourceContentLoader.h"
38591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/HashMap.h"
39591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/WTFString.h"
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdochclass Resource;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class DOMWrapperWorld;
4583750176c3ee2cea66c8a9751271026a5901be3aBen Murdochclass Document;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class DocumentLoader;
47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class LocalFrame;
4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)class GraphicsContext;
4951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)class GraphicsLayer;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InjectedScriptManager;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InspectorClient;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InspectorOverlay;
5376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)class InspectorResourceContentLoader;
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InstrumentingAgents;
55e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)class IntSize;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class KURL;
57e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)class LayoutRect;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Page;
5953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)class RenderObject;
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class SharedBuffer;
61a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)class StyleResolver;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef String ErrorString;
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class InspectorPageAgent FINAL : public InspectorBaseAgent<InspectorPageAgent>, public InspectorBackendDispatcher::PageCommandHandler {
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WTF_MAKE_NONCOPYABLE(InspectorPageAgent);
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    enum ResourceType {
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DocumentResource,
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        StylesheetResource,
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ImageResource,
726f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        FontResource,
736f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        MediaResource,
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ScriptResource,
756f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        TextTrackResource,
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        XHRResource,
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        WebSocketResource,
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        OtherResource
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    static PassOwnPtrWillBeRawPtr<InspectorPageAgent> create(Page*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    // Settings overrides.
8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    void setTextAutosizingEnabled(bool);
8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    void setDeviceScaleAdjustment(float);
869e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setPreferCompositingToLCDTextEnabled(bool);
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    static Vector<Document*> importsForFrame(LocalFrame*);
89fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    static bool cachedResourceContent(Resource*, String* result, bool* base64Encoded);
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static bool sharedBufferContent(PassRefPtr<SharedBuffer>, const String& textEncodingName, bool withBase64Encode, String* result);
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static PassRefPtr<SharedBuffer> resourceData(LocalFrame*, const KURL&, String* textEncodingName);
93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static Resource* cachedResource(LocalFrame*, const KURL&);
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static TypeBuilder::Page::ResourceType::Enum resourceTypeJson(ResourceType);
95fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    static ResourceType cachedResourceType(const Resource&);
96fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    static TypeBuilder::Page::ResourceType::Enum cachedResourceTypeJson(const Resource&);
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Page API for InspectorFrontend
9909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void enable(ErrorString*) OVERRIDE;
10009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void disable(ErrorString*) OVERRIDE;
10109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void addScriptToEvaluateOnLoad(ErrorString*, const String& source, String* result) OVERRIDE;
10209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void removeScriptToEvaluateOnLoad(ErrorString*, const String& identifier) OVERRIDE;
10309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void reload(ErrorString*, const bool* optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad, const String* optionalScriptPreprocessor) OVERRIDE;
104197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void navigate(ErrorString*, const String& url, String* frameId) OVERRIDE;
10509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void getCookies(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> >& cookies) OVERRIDE;
10609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void deleteCookie(ErrorString*, const String& cookieName, const String& url) OVERRIDE;
10709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void getResourceTree(ErrorString*, RefPtr<TypeBuilder::Page::FrameResourceTree>&) OVERRIDE;
1087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void getResourceContent(ErrorString*, const String& frameId, const String& url, PassRefPtrWillBeRawPtr<GetResourceContentCallback>) OVERRIDE;
10909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void searchInResource(ErrorString*, const String& frameId, const String& url, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page::SearchMatch> >&) OVERRIDE;
11009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setDocumentContent(ErrorString*, const String& frameId, const String& html) OVERRIDE;
111197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void setDeviceMetricsOverride(ErrorString*, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, const double* optionalScale, const double* optionalOffsetX, const double* optionalOffsetY) OVERRIDE;
112d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    virtual void clearDeviceMetricsOverride(ErrorString*) OVERRIDE;
113197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void resetScrollAndPageScaleFactor(ErrorString*) OVERRIDE;
1147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void setPageScaleFactor(ErrorString*, double pageScaleFactor) OVERRIDE;
11509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setShowPaintRects(ErrorString*, bool show) OVERRIDE;
11609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setShowDebugBorders(ErrorString*, bool show) OVERRIDE;
11709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setShowFPSCounter(ErrorString*, bool show) OVERRIDE;
11809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setContinuousPaintingEnabled(ErrorString*, bool enabled) OVERRIDE;
11909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setShowScrollBottleneckRects(ErrorString*, bool show) OVERRIDE;
12009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void getScriptExecutionStatus(ErrorString*, PageCommandHandler::Result::Enum*) OVERRIDE;
12109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setScriptExecutionDisabled(ErrorString*, bool) OVERRIDE;
12209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setTouchEmulationEnabled(ErrorString*, bool) OVERRIDE;
12309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setEmulatedMedia(ErrorString*, const String&) OVERRIDE;
1247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void startScreencast(ErrorString*, const String* format, const int* quality, const int* maxWidth, const int* maxHeight) OVERRIDE;
1257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void stopScreencast(ErrorString*) OVERRIDE;
12609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setShowViewportSizeOnResize(ErrorString*, bool show, const bool* showGrid) OVERRIDE;
127bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // InspectorInstrumentation API
129323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    void didClearDocumentOfWindowObject(LocalFrame*);
130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void domContentLoadedEventFired(LocalFrame*);
131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void loadEventFired(LocalFrame*);
132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void didCommitLoad(LocalFrame*, DocumentLoader*);
133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameAttachedToParent(LocalFrame*);
134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameDetachedFromParent(LocalFrame*);
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void loaderDetachedFromFrame(DocumentLoader*);
136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameStartedLoading(LocalFrame*);
137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameStoppedLoading(LocalFrame*);
138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameScheduledNavigation(LocalFrame*, double delay);
139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void frameClearedScheduledNavigation(LocalFrame*);
140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void willRunJavaScriptDialog(const String& message);
141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void didRunJavaScriptDialog();
142a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    bool applyViewportStyleOverride(StyleResolver*);
143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void applyEmulatedMedia(String*);
14451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    void didPaint(RenderObject*, const GraphicsLayer*, GraphicsContext*, const LayoutRect&);
14553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    void didLayout(RenderObject*);
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void didScroll();
14753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    void didResizeMainFrame();
148f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu    void didRecalculateStyle(int);
149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void scriptsEnabled(bool isEnabled);
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Inspector Controller API
15209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setFrontend(InspectorFrontend*) OVERRIDE;
15309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void clearFrontend() OVERRIDE;
15409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void restore() OVERRIDE;
1557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void discardAgent() OVERRIDE;
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Cross-agents API
158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    Page* page() { return m_page; }
159d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    LocalFrame* mainFrame();
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String createIdentifier();
161d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    LocalFrame* frameForId(const String& frameId);
162d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    String frameId(LocalFrame*);
163d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    bool hasIdForFrame(LocalFrame*) const;
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String loaderId(DocumentLoader*);
165d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    LocalFrame* findFrameWithSecurityOrigin(const String& originRawString);
166d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    LocalFrame* assertFrame(ErrorString*, const String& frameId);
167e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    String scriptPreprocessorSource() { return m_scriptPreprocessorSource; }
168a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& resourceSourceMapURL(const String& url);
16919cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles)    bool deviceMetricsOverrideEnabled();
170197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void deviceOrPageScaleFactorChanged();
1717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    bool screencastEnabled();
172d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static DocumentLoader* assertDocumentLoader(ErrorString*, LocalFrame*);
17376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    InspectorResourceContentLoader* resourceContentLoader() { return m_inspectorResourceContentLoader.get(); }
174197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void clearEditedResourcesContent();
175197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void addEditedResourceContent(const String& url, const String& content);
176197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    bool getEditedResourceContent(const String& url, String* content);
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
178c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    virtual void trace(Visitor*) OVERRIDE;
179c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
181197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    class GetResourceContentLoadListener;
18206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
18309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    InspectorPageAgent(Page*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
184197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    bool deviceMetricsChanged(bool enabled, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, double scale, double offsetX, double offsetY);
185d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    void updateViewMetricsFromState();
186197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void updateViewMetrics(bool enabled, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, double scale, double offsetX, double offsetY);
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateTouchEventEmulationInPage(bool);
188f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)    bool compositingEnabled(ErrorString*);
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void getResourceContentAfterResourcesContentLoaded(const String& frameId, const String& url, PassRefPtrWillBeRawPtr<GetResourceContentCallback>);
191197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static bool dataContent(const char* data, unsigned size, const String& textEncodingName, bool withBase64Encode, String* result);
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
194197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void viewportChanged();
195197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    PassRefPtr<TypeBuilder::Page::Frame> buildObjectForFrame(LocalFrame*);
197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    PassRefPtr<TypeBuilder::Page::FrameResourceTree> buildObjectForFrameTree(LocalFrame*);
198c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    RawPtrWillBeMember<Page> m_page;
199c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    RawPtrWillBeMember<InjectedScriptManager> m_injectedScriptManager;
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    InspectorClient* m_client;
2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    InspectorFrontend::Page* m_frontend;
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    InspectorOverlay* m_overlay;
2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    long m_lastScriptIdentifier;
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_pendingScriptToEvaluateOnLoadOnce;
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_scriptToEvaluateOnLoadOnce;
206926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    String m_pendingScriptPreprocessor;
207e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    String m_scriptPreprocessorSource;
208d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    HashMap<LocalFrame*, String> m_frameToIdentifier;
209d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    HashMap<String, LocalFrame*> m_identifierToFrame;
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HashMap<DocumentLoader*, String> m_loaderToIdentifier;
211926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool m_enabled;
212926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool m_ignoreScriptsEnabledNotification;
21319cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles)    bool m_deviceMetricsOverridden;
214197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    bool m_emulateMobileEnabled;
21510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
21610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    bool m_touchEmulationEnabled;
21710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    bool m_originalTouchEnabled;
21810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    bool m_originalDeviceSupportsMouse;
21910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    bool m_originalDeviceSupportsTouch;
2209e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    int m_originalMaxTouchPoints;
22110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
22209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool m_embedderTextAutosizingEnabled;
22309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    double m_embedderFontScaleFactor;
2249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    bool m_embedderPreferCompositingToLCDTextEnabled;
22576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)
2267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    OwnPtrWillBeMember<InspectorResourceContentLoader> m_inspectorResourceContentLoader;
227197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    HashMap<String, String> m_editedResourceContent;
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
231c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // !defined(InspectorPagerAgent_h)
235