blob: 07836526e34fbc6b10560e8bfe291d7ce2486c8d [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DevToolsEmulator_h
#define DevToolsEmulator_h
#include "platform/heap/Handle.h"
#include "public/platform/PointerProperties.h"
#include "public/platform/WebViewportStyle.h"
#include "public/web/WebDeviceEmulationParams.h"
#include "wtf/Forward.h"
#include <memory>
namespace blink {
class InspectorEmulationAgent;
class IntPoint;
class WebInputEvent;
class WebViewImpl;
class DevToolsEmulator final : public GarbageCollectedFinalized<DevToolsEmulator> {
public:
~DevToolsEmulator();
static DevToolsEmulator* create(WebViewImpl*);
DECLARE_TRACE();
// Settings overrides.
void setTextAutosizingEnabled(bool);
void setDeviceScaleAdjustment(float);
void setPreferCompositingToLCDTextEnabled(bool);
void setViewportStyle(WebViewportStyle);
void setPluginsEnabled(bool);
void setScriptEnabled(bool);
void setDoubleTapToZoomEnabled(bool);
bool doubleTapToZoomEnabled() const;
void setAvailablePointerTypes(int);
void setPrimaryPointerType(PointerType);
void setAvailableHoverTypes(int);
void setPrimaryHoverType(HoverType);
void setMainFrameResizesAreOrientationChanges(bool);
bool mainFrameResizesAreOrientationChanges() const;
// Emulation.
void enableDeviceEmulation(const WebDeviceEmulationParams&);
void disableDeviceEmulation();
bool resizeIsDeviceSizeChange();
void setTouchEventEmulationEnabled(bool);
bool handleInputEvent(const WebInputEvent&);
void setScriptExecutionDisabled(bool);
private:
explicit DevToolsEmulator(WebViewImpl*);
void enableMobileEmulation();
void disableMobileEmulation();
WebViewImpl* m_webViewImpl;
bool m_deviceMetricsEnabled;
bool m_emulateMobileEnabled;
WebDeviceEmulationParams m_emulationParams;
bool m_isOverlayScrollbarsEnabled;
bool m_isOrientationEventEnabled;
bool m_isMobileLayoutThemeEnabled;
float m_originalDefaultMinimumPageScaleFactor;
float m_originalDefaultMaximumPageScaleFactor;
bool m_embedderTextAutosizingEnabled;
float m_embedderDeviceScaleAdjustment;
bool m_embedderPreferCompositingToLCDTextEnabled;
WebViewportStyle m_embedderViewportStyle;
bool m_embedderPluginsEnabled;
int m_embedderAvailablePointerTypes;
PointerType m_embedderPrimaryPointerType;
int m_embedderAvailableHoverTypes;
HoverType m_embedderPrimaryHoverType;
bool m_touchEventEmulationEnabled;
bool m_doubleTapToZoomEnabled;
bool m_mainFrameResizesAreOrientationChanges;
bool m_originalTouchEnabled;
bool m_originalDeviceSupportsMouse;
bool m_originalDeviceSupportsTouch;
int m_originalMaxTouchPoints;
std::unique_ptr<IntPoint> m_lastPinchAnchorCss;
std::unique_ptr<IntPoint> m_lastPinchAnchorDip;
bool m_embedderScriptEnabled;
bool m_scriptExecutionDisabled;
};
} // namespace blink
#endif