blob: fc50235745e3b7f3da06606337c6d3d6cf8e90f2 [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_WINDOWS_TESTING_MOCK_WIN32_WINDOW_H_
#define FLUTTER_SHELL_PLATFORM_WINDOWS_TESTING_MOCK_WIN32_WINDOW_H_
#include <windowsx.h>
#include "flutter/shell/platform/windows/testing/test_keyboard.h"
#include "flutter/shell/platform/windows/window.h"
#include "gmock/gmock.h"
namespace flutter {
namespace testing {
/// Mock for the |Window| base class.
class MockWindow : public Window {
public:
MockWindow();
MockWindow(std::unique_ptr<WindowsProcTable> windows_proc_table,
std::unique_ptr<TextInputManager> text_input_manager);
virtual ~MockWindow();
// Prevent copying.
MockWindow(MockWindow const&) = delete;
MockWindow& operator=(MockWindow const&) = delete;
// Wrapper for GetCurrentDPI() which is a protected method.
UINT GetDpi();
// Set the Direct Manipulation owner for testing purposes.
void SetDirectManipulationOwner(
std::unique_ptr<DirectManipulationOwner> owner);
// Simulates a WindowProc message from the OS.
LRESULT InjectWindowMessage(UINT const message,
WPARAM const wparam,
LPARAM const lparam);
void InjectMessageList(int count, const Win32Message* messages);
MOCK_METHOD1(OnDpiScale, void(unsigned int));
MOCK_METHOD2(OnResize, void(unsigned int, unsigned int));
MOCK_METHOD0(OnPaint, void());
MOCK_METHOD4(OnPointerMove,
void(double, double, FlutterPointerDeviceKind, int32_t));
MOCK_METHOD5(OnPointerDown,
void(double, double, FlutterPointerDeviceKind, int32_t, UINT));
MOCK_METHOD5(OnPointerUp,
void(double, double, FlutterPointerDeviceKind, int32_t, UINT));
MOCK_METHOD4(OnPointerLeave,
void(double, double, FlutterPointerDeviceKind, int32_t));
MOCK_METHOD0(OnSetCursor, void());
MOCK_METHOD1(OnText, void(const std::u16string&));
MOCK_METHOD7(OnKey,
void(int, int, int, char32_t, bool, bool, KeyEventCallback));
MOCK_METHOD1(OnUpdateSemanticsEnabled, void(bool));
MOCK_METHOD0(GetNativeViewAccessible, gfx::NativeViewAccessible());
MOCK_METHOD4(OnScroll,
void(double, double, FlutterPointerDeviceKind, int32_t));
MOCK_METHOD0(OnComposeBegin, void());
MOCK_METHOD0(OnComposeCommit, void());
MOCK_METHOD0(OnComposeEnd, void());
MOCK_METHOD2(OnComposeChange, void(const std::u16string&, int));
MOCK_METHOD3(OnImeComposition, void(UINT const, WPARAM const, LPARAM const));
MOCK_METHOD0(OnThemeChange, void());
void CallOnImeComposition(UINT const message,
WPARAM const wparam,
LPARAM const lparam);
protected:
LRESULT Win32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
};
} // namespace testing
} // namespace flutter
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_TESTING_MOCK_WIN32_WINDOW_H_