#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*);
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;
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)