WebViewFunLib.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. // Copyright aXiuShen. All Rights Reserved.
  2. #include "WebViewFunLib.h"
  3. #include "HAL/FileManager.h"
  4. #include "Misc/FileHelper.h"
  5. #include "Misc/Paths.h"
  6. #ifndef USING_WEBBROWSER
  7. #include "CefWebViewFunLib.h"
  8. #include "CefImitateInput.h"
  9. #include "CefWebCookie.h"
  10. #include "CefZipReader.h"
  11. #endif
  12. #include "cefcorelib.h"
  13. bool UWebViewFunLib::SetCookie(const FString& URL, const FWebCookie& Cookie) {
  14. #ifndef USING_WEBBROWSER
  15. webview::FWebCookie in;
  16. in.Name = Cookie.Name;
  17. in.Value = Cookie.Value;
  18. in.Domain = Cookie.Domain;
  19. in.bSecure = Cookie.bSecure;
  20. in.bHttpOnly = Cookie.bHttpOnly;
  21. in.bHasExpires = Cookie.bHasExpires;
  22. in.Expires = Cookie.Expires;
  23. return UWebViewFunLibImp::SetCookie(URL, in);
  24. #else
  25. return false;
  26. #endif
  27. }
  28. bool UWebViewFunLib::DeleteCookies(const FString& URL, const FString& CookieName) {
  29. #ifndef USING_WEBBROWSER
  30. return UWebViewFunLibImp::DeleteCookies(URL, CookieName);
  31. #else
  32. return false;
  33. #endif
  34. }
  35. void UWebViewFunLib::PopupURL(const FString& URL) {
  36. #ifndef USING_WEBBROWSER
  37. UWebViewFunLibImp::PopupURL(URL);
  38. #else
  39. return;
  40. #endif
  41. }
  42. FString UWebViewFunLib::EncodeURL(const FString& URL, const bool use_plus) {
  43. #ifndef USING_WEBBROWSER
  44. return UWebViewFunLibImp::EncodeURL(URL, use_plus);
  45. #else
  46. return FString();
  47. #endif
  48. }
  49. FString UWebViewFunLib::Base64Encode(const FString& data) {
  50. #ifndef USING_WEBBROWSER
  51. return UWebViewFunLibImp::Base64Encode(data);
  52. #else
  53. return FString();
  54. #endif
  55. }
  56. FString UWebViewFunLib::Base64Decode(const FString& base64) {
  57. #ifndef USING_WEBBROWSER
  58. return UWebViewFunLibImp::Base64Decode(base64);
  59. #else
  60. return FString();
  61. #endif
  62. }
  63. FString UWebViewFunLib::Base64EncodeFile(const FString& file) {
  64. #ifndef USING_WEBBROWSER
  65. return UWebViewFunLibImp::Base64EncodeFile(file);
  66. #else
  67. return FString();
  68. #endif
  69. }
  70. bool UWebViewFunLib::Base64DecodeFile(const FString& base64,const FString& file) {
  71. #ifndef USING_WEBBROWSER
  72. return UWebViewFunLibImp::Base64DecodeFile(base64, file);
  73. #else
  74. return false;
  75. #endif
  76. }
  77. bool UWebViewFunLib::Zip(const FString& Dir, const FString& ZipFile, const bool IncludeHiddenFiles) {
  78. #ifndef USING_WEBBROWSER
  79. return UWebViewFunLibImp::Zip(Dir, ZipFile, IncludeHiddenFiles);
  80. #else
  81. return false;
  82. #endif
  83. }
  84. bool UWebViewFunLib::UnZip(const FString& zipFile, const FString& passwd,UZipReader*& Reader) {
  85. #ifndef USING_WEBBROWSER
  86. Reader = NewObject<UZipReader>();
  87. return Reader->Open(zipFile, passwd);
  88. #else
  89. return false;
  90. #endif
  91. }
  92. FImitateInput& UWebViewFunLib::AddMouse(FImitateInput& screen, const WebView_ImitateInput_Mouse mouse, const FIntPoint& p) {
  93. //FImitateInput screen = _screen;
  94. FString type;
  95. switch (mouse) {
  96. case WebView_ImitateInput_Mouse::WebView_ImitateInput_Mouse_Down:type = TEXT("mouse_down"); break;
  97. case WebView_ImitateInput_Mouse::WebView_ImitateInput_Mouse_Up:type = TEXT("mouse_up"); break;
  98. case WebView_ImitateInput_Mouse::WebView_ImitateInput_Mouse_Move:type = TEXT("mouse_move"); break;
  99. default :return screen;
  100. }
  101. FString cmd = FString::Printf(TEXT("{\"type\":\"%s\",\"pos\":{\"x\":%d,\"y\":%d}}"), *type, p.X, p.Y);
  102. screen.Event.Push(cmd);
  103. return screen;
  104. }
  105. FImitateInput& UWebViewFunLib::AddClicked(FImitateInput& screen, const FIntPoint& p) {
  106. /*FImitateInput screen =*/ AddMouse(screen, WebView_ImitateInput_Mouse::WebView_ImitateInput_Mouse_Down, p);
  107. return AddMouse(screen, WebView_ImitateInput_Mouse::WebView_ImitateInput_Mouse_Up, p);
  108. }
  109. FImitateInput& UWebViewFunLib::AddText(FImitateInput& screen, const FString& text) {
  110. FString cmd = FString::Printf(TEXT("{\"type\":\"input\",\"text\":\"%s\"}"), *text);
  111. //FImitateInput screen(screen);
  112. screen.Event.Push(cmd);
  113. return screen;
  114. }
  115. FImitateInput& UWebViewFunLib::AddDelay(FImitateInput& screen, const int ms) {
  116. FString cmd = FString::Printf(TEXT("{\"type\":\"delay\",\"ms\":%d}"), ms);
  117. //FImitateInput screen(_screen);
  118. screen.Event.Push(cmd);
  119. return screen;
  120. }
  121. FImitateInput& UWebViewFunLib::AddKeystroke(FImitateInput& screen, const WebView_ImitateInput_Key keyboard, const FKey& key, const TArray<FKey>& CombinKey) {
  122. FString type;
  123. //FImitateInput screen(_screen);
  124. switch (keyboard) {
  125. case WebView_ImitateInput_Key::WebView_ImitateInput_Key_Down:type = TEXT("key_down"); break;
  126. case WebView_ImitateInput_Key::WebView_ImitateInput_Key_Up:type = TEXT("key_up"); break;
  127. case WebView_ImitateInput_Key::WebView_ImitateInput_Key_Char:type = TEXT("key_char"); break;
  128. default:return screen;
  129. }
  130. const uint32* pcode = 0;// key.GetFName();
  131. const uint32* pcharacter = 0;
  132. int modify = 0 ;
  133. #ifndef USING_WEBBROWSER
  134. modify = UWebViewFunLibImp::KeytoInner(CombinKey);
  135. #endif
  136. FKey inK = key;
  137. FInputKeyManager::Get().GetCodesFromKey(inK, pcode, pcharacter);
  138. uint32 code = 0;
  139. uint32 character = 0;
  140. if (pcode)code = *pcode;
  141. if (pcharacter)character = *pcharacter;
  142. if (keyboard != WebView_ImitateInput_Key::WebView_ImitateInput_Key_Char)character = code;
  143. FString cmd = FString::Printf(TEXT("{\"type\":\"%s\",\"code\":%d,\"character\":%d,\"modify\":%d}"), *type, code, character, modify);
  144. screen.Event.Push(cmd);
  145. return screen;
  146. }
  147. FImitateInput& UWebViewFunLib::AddKey(FImitateInput& screen, const FKey& key, const TArray<FKey> CombinKey) {
  148. /*FImitateInput screen =*/ AddKeystroke(screen, WebView_ImitateInput_Key::WebView_ImitateInput_Key_Down, key, CombinKey);
  149. AddKeystroke(screen, WebView_ImitateInput_Key::WebView_ImitateInput_Key_Char, key, CombinKey);
  150. return AddKeystroke(screen, WebView_ImitateInput_Key::WebView_ImitateInput_Key_Up, key, CombinKey);
  151. }
  152. FImitateInput& UWebViewFunLib::ShowLog(FImitateInput& screen, bool show) {
  153. //FImitateInput screen(_screen);
  154. if (show) {
  155. screen.Event.Add(TEXT(""));
  156. return screen;
  157. }
  158. for (int32 Index = screen.Event.Num() - 1; Index >= 0; --Index) {
  159. auto& onEv = screen.Event[Index];
  160. if (onEv.Len() == 0)screen.Event.RemoveAt(Index);
  161. }
  162. return screen;
  163. }
  164. FImitateInput& UWebViewFunLib::Clear(FImitateInput& _screen) {
  165. //FImitateInput screen(_screen);
  166. _screen.Event.Empty();
  167. return _screen;
  168. }