mirror of
https://github.com/status-im/react-native-webview.git
synced 2025-02-24 17:58:39 +00:00
* Manage to build webview using Visual Studio * WebView in content of UserControl * Destructor not needed * Example app tested * Add messagingEnabled prop * WebViewBridge * Message posting * Store bridge as instance variable * Use bridge if messagingEnabled * Free event delegate * PostMessage api uses string message * script.notify() usage removed * Debug log removed * Bridge reference added * Base for web allowed object implemented c++/winrt * Bribge works * "Microsoft.Windows.CppWinRT" version="2.0.200729.8" * Update bridge implementation * version changes * Reference fix * WebView prj builds * yarn lock update * Platfrom version update * NuGet package reference updated * Messaging test added into example app * Typo fix * try_as() to as() calls * WebView.PostMessage() not supported anymore, use injectJavaScript * Fix WebView.postMessage to work using injectJavascript * Eval postMessage fix * postMessage via injectJavascript * Example fixed to handle postMessage call
44 lines
2.3 KiB
C++
44 lines
2.3 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#pragma once
|
|
|
|
#include "winrt/Microsoft.ReactNative.h"
|
|
#include "NativeModules.h"
|
|
#include "ReactWebView.g.h"
|
|
|
|
#include "winrt/WebViewBridgeComponent.h"
|
|
|
|
using namespace winrt::WebViewBridgeComponent;
|
|
|
|
namespace winrt::ReactNativeWebView::implementation {
|
|
|
|
class ReactWebView : public ReactWebViewT<ReactWebView> {
|
|
public:
|
|
ReactWebView(Microsoft::ReactNative::IReactContext const& reactContext);
|
|
void SetMessagingEnabled(bool enabled);
|
|
~ReactWebView();
|
|
|
|
private:
|
|
bool m_messagingEnabled{ true };
|
|
winrt::Windows::UI::Xaml::Controls::WebView m_webView{ nullptr };
|
|
Microsoft::ReactNative::IReactContext m_reactContext{ nullptr };
|
|
WebBridge m_webBridge{ nullptr };
|
|
winrt::event_token m_messageToken;
|
|
winrt::Windows::UI::Xaml::Controls::WebView::NavigationStarting_revoker m_navigationStartingRevoker{};
|
|
winrt::Windows::UI::Xaml::Controls::WebView::NavigationCompleted_revoker m_navigationCompletedRevoker{};
|
|
winrt::Windows::UI::Xaml::Controls::WebView::NavigationFailed_revoker m_navigationFailedRevoker{};
|
|
|
|
void HandleMessageFromJS(winrt::hstring const& message);
|
|
void RegisterEvents();
|
|
void WriteWebViewNavigationEventArg(winrt::Windows::UI::Xaml::Controls::WebView const& sender, winrt::Microsoft::ReactNative::IJSValueWriter const& eventDataWriter);
|
|
void OnNavigationStarting(winrt::Windows::UI::Xaml::Controls::WebView const& sender, winrt::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs const& args);
|
|
void OnNavigationCompleted(winrt::Windows::UI::Xaml::Controls::WebView const& sender, winrt::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs const& args);
|
|
void OnNavigationFailed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs const& args);
|
|
void OnMessagePosted(hstring const& message);
|
|
};
|
|
} // namespace winrt::ReactNativeWebView::implementation
|
|
|
|
namespace winrt::ReactNativeWebView::factory_implementation {
|
|
struct ReactWebView : ReactWebViewT<ReactWebView, implementation::ReactWebView> {};
|
|
} // namespace winrt::ReactNativeWebView::factory_implementation
|