diff --git a/lib/src/webview.dart b/lib/src/webview.dart index 32d0770..d257c47 100644 --- a/lib/src/webview.dart +++ b/lib/src/webview.dart @@ -388,6 +388,16 @@ class WebviewController extends ValueNotifier { return _methodChannel.invokeMethod('setUserAgent', userAgent); } + /// Sets the areDevToolsEnabled value. + Future setAreDevToolsEnabled(bool areDevToolsEnabled) async { + if (_isDisposed) { + return; + } + assert(value.isInitialized); + return _methodChannel.invokeMethod( + 'put_AreDevToolsEnabled', areDevToolsEnabled); + } + /// Clears browser cookies. Future clearCookies() async { if (_isDisposed) { diff --git a/windows/webview.cc b/windows/webview.cc index 0de207a..8bc51d7 100644 --- a/windows/webview.cc +++ b/windows/webview.cc @@ -75,12 +75,11 @@ Webview::Webview( webview_controller_->put_ShouldDetectMonitorScaleChanges(FALSE); webview_controller_->put_RasterizationScale(1.0); - wil::com_ptr settings; - if (SUCCEEDED(webview_->get_Settings(settings.put()))) { - settings2_ = settings.try_query(); + if (SUCCEEDED(webview_->get_Settings(settings_.put()))) { + settings2_ = settings_.try_query(); - settings->put_IsStatusBarEnabled(FALSE); - settings->put_AreDefaultContextMenusEnabled(FALSE); + settings_->put_IsStatusBarEnabled(FALSE); + settings_->put_AreDefaultContextMenusEnabled(FALSE); } EnableSecurityUpdates(); @@ -447,6 +446,14 @@ bool Webview::SetUserAgent(const std::string& user_agent) { return false; } +bool Webview::SetAreDevToolsEnabled(bool areDevToolsEnabled) { + if (settings_) { + return settings_->put_AreDevToolsEnabled(areDevToolsEnabled) == + S_OK; + } + return false; +} + bool Webview::SetBackgroundColor(int32_t color) { if (!IsValid()) { return false; diff --git a/windows/webview.h b/windows/webview.h index 567e742..52336c9 100644 --- a/windows/webview.h +++ b/windows/webview.h @@ -149,6 +149,7 @@ class Webview { bool SetCacheDisabled(bool disabled); void SetPopupWindowPolicy(WebviewPopupWindowPolicy policy); bool SetUserAgent(const std::string& user_agent); + bool SetAreDevToolsEnabled(bool areDevToolsEnabled); bool OpenDevTools(); bool SetBackgroundColor(int32_t color); bool SetZoomFactor(double factor); @@ -219,6 +220,7 @@ class Webview { wil::com_ptr webview_; wil::com_ptr devtools_protocol_event_receiver_; + wil::com_ptr settings_; wil::com_ptr settings2_; POINT last_cursor_pos_ = {0, 0}; VirtualKeyState virtual_keys_; diff --git a/windows/webview_bridge.cc b/windows/webview_bridge.cc index f417f9a..63944fd 100644 --- a/windows/webview_bridge.cc +++ b/windows/webview_bridge.cc @@ -601,7 +601,19 @@ void WebviewBridge::HandleMethodCall( } return result->Error(kErrorInvalidArgs); } - + + // setAreDevToolsEnabled: bool + if (method_name.compare(kMethodSetAreDevToolsEnabled) == 0) { + if (const auto areDevToolsEnabled = std::get_if(method_call.arguments())) { + if (webview_->SetAreDevToolsEnabled(*areDevToolsEnabled)) { + return result->Success(); + } + return result->Error(kErrorNotSupported, + "Setting the setAreDevToolsEnabled failed."); + } + return result->Error(kErrorInvalidArgs); + } + // setBackgroundColor: int if (method_name.compare(kMethodSetBackgroundColor) == 0) { if (const auto color = std::get_if(method_call.arguments())) {