1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "flutter/shell/platform/windows/client_wrapper/testing/stub_flutter_windows_api.h"
6
7 static flutter::testing::StubFlutterWindowsApi* s_stub_implementation;
8
9 namespace flutter {
10 namespace testing {
11
12 // static
SetTestStub(StubFlutterWindowsApi * stub)13 void StubFlutterWindowsApi::SetTestStub(StubFlutterWindowsApi* stub) {
14 s_stub_implementation = stub;
15 }
16
17 // static
GetTestStub()18 StubFlutterWindowsApi* StubFlutterWindowsApi::GetTestStub() {
19 return s_stub_implementation;
20 }
21
ScopedStubFlutterWindowsApi(std::unique_ptr<StubFlutterWindowsApi> stub)22 ScopedStubFlutterWindowsApi::ScopedStubFlutterWindowsApi(
23 std::unique_ptr<StubFlutterWindowsApi> stub)
24 : stub_(std::move(stub)) {
25 previous_stub_ = StubFlutterWindowsApi::GetTestStub();
26 StubFlutterWindowsApi::SetTestStub(stub_.get());
27 }
28
~ScopedStubFlutterWindowsApi()29 ScopedStubFlutterWindowsApi::~ScopedStubFlutterWindowsApi() {
30 StubFlutterWindowsApi::SetTestStub(previous_stub_);
31 }
32
33 } // namespace testing
34 } // namespace flutter
35
36 // Forwarding dummy implementations of the C API.
37
FlutterDesktopInit()38 bool FlutterDesktopInit() {
39 if (s_stub_implementation) {
40 s_stub_implementation->Init();
41 }
42 return true;
43 }
44
FlutterDesktopTerminate()45 void FlutterDesktopTerminate() {
46 if (s_stub_implementation) {
47 s_stub_implementation->Terminate();
48 }
49 }
50
FlutterDesktopCreateWindow(int initial_width,int initial_height,const char * title,const char * assets_path,const char * icu_data_path,const char ** arguments,size_t argument_count)51 FlutterDesktopWindowControllerRef FlutterDesktopCreateWindow(
52 int initial_width,
53 int initial_height,
54 const char* title,
55 const char* assets_path,
56 const char* icu_data_path,
57 const char** arguments,
58 size_t argument_count) {
59 if (s_stub_implementation) {
60 return s_stub_implementation->CreateWindow(
61 initial_width, initial_height, title, assets_path, icu_data_path,
62 arguments, argument_count);
63 }
64 return nullptr;
65 }
66
FlutterDesktopDestroyWindow(FlutterDesktopWindowControllerRef controller)67 void FlutterDesktopDestroyWindow(FlutterDesktopWindowControllerRef controller) {
68 if (s_stub_implementation) {
69 s_stub_implementation->DestroyWindow();
70 }
71 }
72
FlutterDesktopSetHoverEnabled(FlutterDesktopWindowRef flutter_window,bool enabled)73 void FlutterDesktopSetHoverEnabled(FlutterDesktopWindowRef flutter_window,
74 bool enabled) {
75 if (s_stub_implementation) {
76 s_stub_implementation->SetHoverEnabled(enabled);
77 }
78 }
79
FlutterDesktopSetWindowTitle(FlutterDesktopWindowRef flutter_window,const char * title)80 void FlutterDesktopSetWindowTitle(FlutterDesktopWindowRef flutter_window,
81 const char* title) {
82 if (s_stub_implementation) {
83 s_stub_implementation->SetWindowTitle(title);
84 }
85 }
86
FlutterDesktopSetWindowIcon(FlutterDesktopWindowRef flutter_window,uint8_t * pixel_data,int width,int height)87 void FlutterDesktopSetWindowIcon(FlutterDesktopWindowRef flutter_window,
88 uint8_t* pixel_data,
89 int width,
90 int height) {
91 if (s_stub_implementation) {
92 s_stub_implementation->SetWindowIcon(pixel_data, width, height);
93 }
94 }
95
FlutterDesktopRunWindowLoop(FlutterDesktopWindowControllerRef controller)96 void FlutterDesktopRunWindowLoop(FlutterDesktopWindowControllerRef controller) {
97 if (s_stub_implementation) {
98 s_stub_implementation->RunWindowLoop();
99 }
100 }
101
FlutterDesktopRunEngine(const char * assets_path,const char * icu_data_path,const char ** arguments,size_t argument_count)102 FlutterDesktopEngineRef FlutterDesktopRunEngine(const char* assets_path,
103 const char* icu_data_path,
104 const char** arguments,
105 size_t argument_count) {
106 if (s_stub_implementation) {
107 return s_stub_implementation->RunEngine(assets_path, icu_data_path,
108 arguments, argument_count);
109 }
110 return nullptr;
111 }
112
FlutterDesktopShutDownEngine(FlutterDesktopEngineRef engine_ref)113 bool FlutterDesktopShutDownEngine(FlutterDesktopEngineRef engine_ref) {
114 if (s_stub_implementation) {
115 return s_stub_implementation->ShutDownEngine();
116 }
117 return true;
118 }
119
FlutterDesktopGetWindow(FlutterDesktopWindowControllerRef controller)120 FlutterDesktopWindowRef FlutterDesktopGetWindow(
121 FlutterDesktopWindowControllerRef controller) {
122 // The stub ignores this, so just return an arbitrary non-zero value.
123 return reinterpret_cast<FlutterDesktopWindowRef>(1);
124 }
125
FlutterDesktopGetPluginRegistrar(FlutterDesktopWindowControllerRef controller,const char * plugin_name)126 FlutterDesktopPluginRegistrarRef FlutterDesktopGetPluginRegistrar(
127 FlutterDesktopWindowControllerRef controller,
128 const char* plugin_name) {
129 // The stub ignores this, so just return an arbitrary non-zero value.
130 return reinterpret_cast<FlutterDesktopPluginRegistrarRef>(1);
131 }
132