Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / inspector / InspectorPageAgent.h
index 7eaec1e..530b3a9 100644 (file)
 #define InspectorPageAgent_h
 
 
-#include "InspectorFrontend.h"
+#include "core/InspectorFrontend.h"
 #include "core/inspector/InspectorBaseAgent.h"
+#include "core/inspector/InspectorResourceContentLoader.h"
 #include "wtf/HashMap.h"
 #include "wtf/text/WTFString.h"
 
-namespace WebCore {
+namespace blink {
 
 class Resource;
-class DOMWrapperWorld;
 class Document;
 class DocumentLoader;
-class Frame;
+class LocalFrame;
 class GraphicsContext;
 class GraphicsLayer;
 class InjectedScriptManager;
 class InspectorClient;
 class InspectorOverlay;
-class InstrumentingAgents;
-class IntSize;
+class InspectorResourceContentLoader;
 class KURL;
 class LayoutRect;
 class Page;
 class RenderObject;
 class SharedBuffer;
 class StyleResolver;
+class TextResourceDecoder;
 
 typedef String ErrorString;
 
-class InspectorPageAgent FINAL : public InspectorBaseAgent<InspectorPageAgent>, public InspectorBackendDispatcher::PageCommandHandler {
+class InspectorPageAgent final : public InspectorBaseAgent<InspectorPageAgent>, public InspectorBackendDispatcher::PageCommandHandler {
     WTF_MAKE_NONCOPYABLE(InspectorPageAgent);
 public:
     enum ResourceType {
         DocumentResource,
         StylesheetResource,
         ImageResource,
-        Font,
+        FontResource,
+        MediaResource,
         ScriptResource,
+        TextTrackResource,
         XHRResource,
         WebSocketResource,
         OtherResource
     };
 
-    static PassOwnPtr<InspectorPageAgent> create(Page*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
+    static PassOwnPtrWillBeRawPtr<InspectorPageAgent> create(Page*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
 
+    // Settings overrides.
+    void setTextAutosizingEnabled(bool);
+    void setDeviceScaleAdjustment(float);
+    void setPreferCompositingToLCDTextEnabled(bool);
+
+    static Vector<Document*> importsForFrame(LocalFrame*);
     static bool cachedResourceContent(Resource*, String* result, bool* base64Encoded);
     static bool sharedBufferContent(PassRefPtr<SharedBuffer>, const String& textEncodingName, bool withBase64Encode, String* result);
 
-    static PassRefPtr<SharedBuffer> resourceData(Frame*, const KURL&, String* textEncodingName);
-    static Resource* cachedResource(Frame*, const KURL&);
+    static PassRefPtr<SharedBuffer> resourceData(LocalFrame*, const KURL&, String* textEncodingName);
+    static Resource* cachedResource(LocalFrame*, const KURL&);
     static TypeBuilder::Page::ResourceType::Enum resourceTypeJson(ResourceType);
     static ResourceType cachedResourceType(const Resource&);
     static TypeBuilder::Page::ResourceType::Enum cachedResourceTypeJson(const Resource&);
+    static PassOwnPtr<TextResourceDecoder> createResourceTextDecoder(const String& mimeType, const String& textEncodingName);
 
     // Page API for InspectorFrontend
-    virtual void enable(ErrorString*) OVERRIDE;
-    virtual void disable(ErrorString*) OVERRIDE;
-    virtual void addScriptToEvaluateOnLoad(ErrorString*, const String& source, String* result) OVERRIDE;
-    virtual void removeScriptToEvaluateOnLoad(ErrorString*, const String& identifier) OVERRIDE;
-    virtual void reload(ErrorString*, const bool* optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad, const String* optionalScriptPreprocessor) OVERRIDE;
-    virtual void navigate(ErrorString*, const String& url) OVERRIDE;
-    virtual void getNavigationHistory(ErrorString*, int*, RefPtr<TypeBuilder::Array<TypeBuilder::Page::NavigationEntry> >&) OVERRIDE;
-    virtual void navigateToHistoryEntry(ErrorString*, int) OVERRIDE;
-    virtual void getCookies(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> >& cookies) OVERRIDE;
-    virtual void deleteCookie(ErrorString*, const String& cookieName, const String& url) OVERRIDE;
-    virtual void getResourceTree(ErrorString*, RefPtr<TypeBuilder::Page::FrameResourceTree>&) OVERRIDE;
-    virtual void getResourceContent(ErrorString*, const String& frameId, const String& url, String* content, bool* base64Encoded) OVERRIDE;
-    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;
-    virtual void setDocumentContent(ErrorString*, const String& frameId, const String& html) OVERRIDE;
-    virtual void setDeviceMetricsOverride(ErrorString*, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, const bool* optionalTextAutosizing, const double* optionalFontScaleFactor) OVERRIDE;
-    virtual void setShowPaintRects(ErrorString*, bool show) OVERRIDE;
-    virtual void setShowDebugBorders(ErrorString*, bool show) OVERRIDE;
-    virtual void setShowFPSCounter(ErrorString*, bool show) OVERRIDE;
-    virtual void setContinuousPaintingEnabled(ErrorString*, bool enabled) OVERRIDE;
-    virtual void setShowScrollBottleneckRects(ErrorString*, bool show) OVERRIDE;
-    virtual void getScriptExecutionStatus(ErrorString*, PageCommandHandler::Result::Enum*) OVERRIDE;
-    virtual void setScriptExecutionDisabled(ErrorString*, bool) OVERRIDE;
-    virtual void setDeviceOrientationOverride(ErrorString*, double, double, double) OVERRIDE;
-    virtual void clearDeviceOrientationOverride(ErrorString*) OVERRIDE;
-    virtual void setTouchEmulationEnabled(ErrorString*, bool) OVERRIDE;
-    virtual void setEmulatedMedia(ErrorString*, const String&) OVERRIDE;
-    virtual void captureScreenshot(ErrorString*, const String* format, const int* quality, const int* maxWidth, const int* maxHeight, String* data, RefPtr<TypeBuilder::Page::ScreencastFrameMetadata>& out_metadata) OVERRIDE;
-    virtual void canScreencast(ErrorString*, bool*) OVERRIDE;
-    virtual void startScreencast(ErrorString*, const String* format, const int* quality, const int* maxWidth, const int* maxHeight) OVERRIDE;
-    virtual void stopScreencast(ErrorString*) OVERRIDE;
-    virtual void handleJavaScriptDialog(ErrorString*, bool accept, const String* promptText) OVERRIDE;
-    virtual void queryUsageAndQuota(WebCore::ErrorString*, const WTF::String&, WTF::RefPtr<WebCore::TypeBuilder::Page::Quota>&, WTF::RefPtr<WebCore::TypeBuilder::Page::Usage>&) OVERRIDE;
-    virtual void setShowViewportSizeOnResize(ErrorString*, bool show, const bool* showGrid) OVERRIDE;
-
-    // Text autosizing override helpers.
-    bool overrideTextAutosizing(bool);
-    // Note: This is used by Settings::deviceScaleAdjustment to calculate the overridden device scale adjustment.
-    float overrideFontScaleFactor(float);
+    virtual void enable(ErrorString*) override;
+    virtual void disable(ErrorString*) override;
+    virtual void addScriptToEvaluateOnLoad(ErrorString*, const String& source, String* result) override;
+    virtual void removeScriptToEvaluateOnLoad(ErrorString*, const String& identifier) override;
+    virtual void reload(ErrorString*, const bool* optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad, const String* optionalScriptPreprocessor) override;
+    virtual void navigate(ErrorString*, const String& url, String* frameId) override;
+    virtual void getCookies(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> >& cookies) override;
+    virtual void deleteCookie(ErrorString*, const String& cookieName, const String& url) override;
+    virtual void getResourceTree(ErrorString*, RefPtr<TypeBuilder::Page::FrameResourceTree>&) override;
+    virtual void getResourceContent(ErrorString*, const String& frameId, const String& url, PassRefPtrWillBeRawPtr<GetResourceContentCallback>) override;
+    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;
+    virtual void setDocumentContent(ErrorString*, const String& frameId, const String& html) override;
+    virtual void setDeviceMetricsOverride(ErrorString*, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, const double* optionalScale, const double* optionalOffsetX, const double* optionalOffsetY) override;
+    virtual void clearDeviceMetricsOverride(ErrorString*) override;
+    virtual void resetScrollAndPageScaleFactor(ErrorString*) override;
+    virtual void setPageScaleFactor(ErrorString*, double pageScaleFactor) override;
+    virtual void setShowPaintRects(ErrorString*, bool show) override;
+    virtual void setShowDebugBorders(ErrorString*, bool show) override;
+    virtual void setShowFPSCounter(ErrorString*, bool show) override;
+    virtual void setContinuousPaintingEnabled(ErrorString*, bool enabled) override;
+    virtual void setShowScrollBottleneckRects(ErrorString*, bool show) override;
+    virtual void getScriptExecutionStatus(ErrorString*, PageCommandHandler::Result::Enum*) override;
+    virtual void setScriptExecutionDisabled(ErrorString*, bool) override;
+    virtual void setTouchEmulationEnabled(ErrorString*, bool) override;
+    virtual void setEmulatedMedia(ErrorString*, const String&) override;
+    virtual void startScreencast(ErrorString*, const String* format, const int* quality, const int* maxWidth, const int* maxHeight) override;
+    virtual void stopScreencast(ErrorString*) override;
+    virtual void setShowViewportSizeOnResize(ErrorString*, bool show, const bool* showGrid) override;
 
     // InspectorInstrumentation API
-    void didClearWindowObjectInMainWorld(Frame*);
-    void domContentLoadedEventFired(Frame*);
-    void loadEventFired(Frame*);
-    void didCommitLoad(Frame*, DocumentLoader*);
-    void frameAttachedToParent(Frame*);
-    void frameDetachedFromParent(Frame*);
+    void didClearDocumentOfWindowObject(LocalFrame*);
+    void domContentLoadedEventFired(LocalFrame*);
+    void loadEventFired(LocalFrame*);
+    void didCommitLoad(LocalFrame*, DocumentLoader*);
+    void frameAttachedToParent(LocalFrame*);
+    void frameDetachedFromParent(LocalFrame*);
     void loaderDetachedFromFrame(DocumentLoader*);
-    void frameStartedLoading(Frame*);
-    void frameStoppedLoading(Frame*);
-    void frameScheduledNavigation(Frame*, double delay);
-    void frameClearedScheduledNavigation(Frame*);
+    void frameStartedLoading(LocalFrame*);
+    void frameStoppedLoading(LocalFrame*);
+    void frameScheduledNavigation(LocalFrame*, double delay);
+    void frameClearedScheduledNavigation(LocalFrame*);
     void willRunJavaScriptDialog(const String& message);
     void didRunJavaScriptDialog();
     bool applyViewportStyleOverride(StyleResolver*);
@@ -145,46 +144,58 @@ public:
     void didLayout(RenderObject*);
     void didScroll();
     void didResizeMainFrame();
-    void didRecalculateStyle();
+    void didRecalculateStyle(int);
     void scriptsEnabled(bool isEnabled);
 
     // Inspector Controller API
-    virtual void setFrontend(InspectorFrontend*) OVERRIDE;
-    virtual void clearFrontend() OVERRIDE;
-    virtual void restore() OVERRIDE;
-
-    void webViewResized(const IntSize&);
+    virtual void setFrontend(InspectorFrontend*) override;
+    virtual void clearFrontend() override;
+    virtual void restore() override;
+    virtual void discardAgent() override;
 
     // Cross-agents API
     Page* page() { return m_page; }
-    Frame* mainFrame();
+    LocalFrame* mainFrame();
     String createIdentifier();
-    Frame* frameForId(const String& frameId);
-    String frameId(Frame*);
-    bool hasIdForFrame(Frame*) const;
+    LocalFrame* frameForId(const String& frameId);
+    String frameId(LocalFrame*);
+    bool hasIdForFrame(LocalFrame*) const;
     String loaderId(DocumentLoader*);
-    Frame* findFrameWithSecurityOrigin(const String& originRawString);
-    Frame* assertFrame(ErrorString*, const String& frameId);
+    LocalFrame* findFrameWithSecurityOrigin(const String& originRawString);
+    LocalFrame* assertFrame(ErrorString*, const String& frameId);
     String scriptPreprocessorSource() { return m_scriptPreprocessorSource; }
     const AtomicString& resourceSourceMapURL(const String& url);
     bool deviceMetricsOverrideEnabled();
-    static DocumentLoader* assertDocumentLoader(ErrorString*, Frame*);
+    void deviceOrPageScaleFactorChanged();
+    bool screencastEnabled();
+    static DocumentLoader* assertDocumentLoader(ErrorString*, LocalFrame*);
+    InspectorResourceContentLoader* resourceContentLoader() { return m_inspectorResourceContentLoader.get(); }
+    void clearEditedResourcesContent();
+    void addEditedResourceContent(const String& url, const String& content);
+    bool getEditedResourceContent(const String& url, String* content);
+
+    virtual void trace(Visitor*) override;
 
 private:
-    static void resourceContent(ErrorString*, Frame*, const KURL&, String* result, bool* base64Encoded);
+    class GetResourceContentLoadListener;
 
     InspectorPageAgent(Page*, InjectedScriptManager*, InspectorClient*, InspectorOverlay*);
-    bool deviceMetricsChanged(int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, double fontScaleFactor, bool textAutosizing);
-    void updateViewMetrics(int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow);
+    bool deviceMetricsChanged(bool enabled, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, double scale, double offsetX, double offsetY);
+    void updateViewMetricsFromState();
+    void updateViewMetrics(bool enabled, int width, int height, double deviceScaleFactor, bool mobile, bool fitWindow, double scale, double offsetX, double offsetY);
     void updateTouchEventEmulationInPage(bool);
-    bool forceCompositingMode(ErrorString*);
+    bool compositingEnabled(ErrorString*);
+
+    void getResourceContentAfterResourcesContentLoaded(const String& frameId, const String& url, PassRefPtrWillBeRawPtr<GetResourceContentCallback>);
 
     static bool dataContent(const char* data, unsigned size, const String& textEncodingName, bool withBase64Encode, String* result);
 
-    PassRefPtr<TypeBuilder::Page::Frame> buildObjectForFrame(Frame*);
-    PassRefPtr<TypeBuilder::Page::FrameResourceTree> buildObjectForFrameTree(Frame*);
-    Page* m_page;
-    InjectedScriptManager* m_injectedScriptManager;
+    void viewportChanged();
+
+    PassRefPtr<TypeBuilder::Page::Frame> buildObjectForFrame(LocalFrame*);
+    PassRefPtr<TypeBuilder::Page::FrameResourceTree> buildObjectForFrameTree(LocalFrame*);
+    RawPtrWillBeMember<Page> m_page;
+    RawPtrWillBeMember<InjectedScriptManager> m_injectedScriptManager;
     InspectorClient* m_client;
     InspectorFrontend::Page* m_frontend;
     InspectorOverlay* m_overlay;
@@ -193,17 +204,30 @@ private:
     String m_scriptToEvaluateOnLoadOnce;
     String m_pendingScriptPreprocessor;
     String m_scriptPreprocessorSource;
-    HashMap<Frame*, String> m_frameToIdentifier;
-    HashMap<String, Frame*> m_identifierToFrame;
+    HashMap<LocalFrame*, String> m_frameToIdentifier;
+    HashMap<String, LocalFrame*> m_identifierToFrame;
     HashMap<DocumentLoader*, String> m_loaderToIdentifier;
     bool m_enabled;
     bool m_ignoreScriptsEnabledNotification;
     bool m_deviceMetricsOverridden;
-    bool m_emulateViewportEnabled;
+    bool m_emulateMobileEnabled;
+
+    bool m_touchEmulationEnabled;
+    bool m_originalTouchEnabled;
+    bool m_originalDeviceSupportsMouse;
+    bool m_originalDeviceSupportsTouch;
+    int m_originalMaxTouchPoints;
+
+    bool m_embedderTextAutosizingEnabled;
+    double m_embedderFontScaleFactor;
+    bool m_embedderPreferCompositingToLCDTextEnabled;
+
+    OwnPtrWillBeMember<InspectorResourceContentLoader> m_inspectorResourceContentLoader;
+    HashMap<String, String> m_editedResourceContent;
 };
 
 
-} // namespace WebCore
+} // namespace blink
 
 
 #endif // !defined(InspectorPagerAgent_h)