• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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