[M85 Migration][Callback] Implement new smart callback, 'did,not,allow,script' 12/245312/4
authoryh106.jung <yh106.jung@samsung.com>
Wed, 1 Feb 2017 04:40:18 +0000 (13:40 +0900)
committerBot Blink <blinkbot@samsung.com>
Mon, 12 Oct 2020 07:18:56 +0000 (07:18 +0000)
This patch makes new smart callback that is called when javascript is
disabled while page is loading.

References:
https://review.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/219752

Change-Id: Ibcd48d4f7332c81b223cf58a29d6194673584ba1
Signed-off-by: yh106.jung <yh106.jung@samsung.com>
tizen_src/ewk/efl_integration/BUILD.gn
tizen_src/ewk/efl_integration/browser/web_view_browser_message_filter.cc
tizen_src/ewk/efl_integration/common/render_messages_ewk.h
tizen_src/ewk/efl_integration/eweb_view_callbacks.h
tizen_src/ewk/efl_integration/renderer/content_renderer_client_efl.cc
tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.cc [new file with mode: 0644]
tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.h [new file with mode: 0644]

index 4b8ea8b..669b529 100644 (file)
@@ -516,6 +516,8 @@ shared_library("chromium-ewk") {
     "public/ewk_window_features_internal.h",
     "renderer/content_renderer_client_efl.cc",
     "renderer/content_renderer_client_efl.h",
+    "renderer/content_settings_client_efl.cc",
+    "renderer/content_settings_client_efl.h",
     "renderer/editorclient_agent.cc",
     "renderer/editorclient_agent.h",
     "renderer/print_web_view_helper_efl.cc",
index 55f50d8..3714144 100644 (file)
@@ -158,6 +158,11 @@ class WebViewBrowserMessageFilterPrivate
           currentNodeIndex, prevState, nextState);
   }
 
+  void OnDidNotAllowScript() {
+    if (web_view_)
+      web_view_->SmartCallback<EWebViewCallbacks::DidNotAllowScript>().call();
+  }
+
   void Observe(int type, const content::NotificationSource& source,
       const content::NotificationDetails& details) override {
     DCHECK_EQ(content::NOTIFICATION_WEB_CONTENTS_DESTROYED, type);
@@ -233,6 +238,8 @@ bool WebViewBrowserMessageFilter::OnMessageReceived(
 #endif
     IPC_MESSAGE_FORWARD(EwkHostMsg_RequestSelectCollectionInformationUpdateACK,
         private_, WebViewBrowserMessageFilterPrivate::OnRequestSelectCollectionInformationUpdateACK)
+    IPC_MESSAGE_FORWARD(EwkHostMsg_DidNotAllowScript, private_,
+                        WebViewBrowserMessageFilterPrivate::OnDidNotAllowScript)
 
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
index 209a955..2e73e7e 100644 (file)
@@ -132,14 +132,14 @@ IPC_MESSAGE_CONTROL2(WrtMsg_ParseUrlResponse,
                      GURL)           // result: url
 
 IPC_MESSAGE_CONTROL1(WrtMsg_SendWrtMessage,
-                     Ewk_Wrt_Message_Data /* data */);
+                     Ewk_Wrt_Message_Data /* data */)
 
 IPC_SYNC_MESSAGE_ROUTED1_1(EwkHostMsg_WrtSyncMessage,
                            Ewk_Wrt_Message_Data /* data */,
-                           std::string /*result*/);
+                           std::string /*result*/)
 
 IPC_MESSAGE_ROUTED1(EwkHostMsg_WrtMessage,
-                    Ewk_Wrt_Message_Data /* data */);
+                    Ewk_Wrt_Message_Data /* data */)
 
 IPC_MESSAGE_CONTROL2(EwkViewHostMsg_HitTestReply,
                     int, /* render_view_id */
@@ -281,9 +281,11 @@ IPC_MESSAGE_ROUTED1(EwkFrameMsg_LoadNotFoundErrorPage,
 
 IPC_MESSAGE_ROUTED1(EwkFrameMsg_MoveToNextOrPreviousSelectElement,
                     bool /* next */)
-IPC_MESSAGE_ROUTED0(EwkFrameMsg_RequestSelectCollectionInformation);
+IPC_MESSAGE_ROUTED0(EwkFrameMsg_RequestSelectCollectionInformation)
 IPC_MESSAGE_ROUTED4(EwkHostMsg_RequestSelectCollectionInformationUpdateACK,
                     int /* formElementCount */,
                     int /* currentNodeIndex */,
                     bool /* prevState */,
                     bool /* nextState */)
+
+IPC_MESSAGE_ROUTED0(EwkHostMsg_DidNotAllowScript)
index 8ab6b1b..e23a4bd 100644 (file)
@@ -136,7 +136,8 @@ enum CallbackType {
 #if defined(OS_TIZEN)
   NewWindowNavigationPolicyDecision,
 #endif // OS_TIZEN
-  URIChanged
+  URIChanged,
+  DidNotAllowScript
 };
 
 template <CallbackType>
@@ -284,7 +285,7 @@ DECLARE_EWK_VIEW_CALLBACK(MenuBarVisible, "menubar,visible", bool*);
 DECLARE_EWK_VIEW_CALLBACK(StatusBarVisible, "statusbar,visible", bool*);
 DECLARE_EWK_VIEW_CALLBACK(ToolbarVisible, "toolbar,visible", bool*);
 DECLARE_EWK_VIEW_CALLBACK(WindowResizable, "window,resizable", bool*);
-
+DECLARE_EWK_VIEW_CALLBACK(DidNotAllowScript, "did,not,allow,script", void);
 }
 
 #endif
index 6baa3cd..106f19a 100644 (file)
@@ -20,6 +20,7 @@
 #include "content/public/renderer/render_view.h"
 #include "content/renderer/loader/request_extra_data.h"
 #include "content/renderer/render_view_impl.h"
+#include "renderer/content_settings_client_efl.h"
 #include "renderer/editorclient_agent.h"
 #include "renderer/plugins/plugin_placeholder_efl.h"
 #include "renderer/render_frame_observer_efl.h"
@@ -129,6 +130,7 @@ void ContentRendererClientEfl::RenderThreadStarted() {
 
 void ContentRendererClientEfl::RenderFrameCreated(content::RenderFrame* render_frame) {
   new content::RenderFrameObserverEfl(render_frame);
+  new content::ContentSettingsClientEfl(render_frame);
 
 #if defined(TIZEN_AUTOFILL_SUPPORT)
   PasswordAutofillAgent* password_autofill_agent =
diff --git a/tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.cc b/tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.cc
new file mode 100644 (file)
index 0000000..244f45d
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright 2016 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "renderer/content_settings_client_efl.h"
+
+#include "common/render_messages_ewk.h"
+#include "content/public/renderer/render_frame.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+
+namespace content {
+
+ContentSettingsClientEfl::ContentSettingsClientEfl(RenderFrame* render_frame)
+    : RenderFrameObserver(render_frame) {
+  render_frame->GetWebFrame()->SetContentSettingsClient(this);
+}
+
+ContentSettingsClientEfl::~ContentSettingsClientEfl() {}
+
+void ContentSettingsClientEfl::DidNotAllowScript() {
+  Send(new EwkHostMsg_DidNotAllowScript(routing_id()));
+}
+
+void ContentSettingsClientEfl::OnDestruct() {
+  delete this;
+}
+
+}  // namespace content
diff --git a/tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.h b/tizen_src/ewk/efl_integration/renderer/content_settings_client_efl.h
new file mode 100644 (file)
index 0000000..49fb42e
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright 2016 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_SETTINGS_CLIENT_EFL_H_
+#define CONTENT_SETTINGS_CLIENT_EFL_H_
+
+#include "content/public/renderer/render_frame_observer.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+
+namespace content {
+
+class ContentSettingsClientEfl : public RenderFrameObserver,
+                                 public blink::WebContentSettingsClient {
+ public:
+  explicit ContentSettingsClientEfl(RenderFrame* render_view);
+  ~ContentSettingsClientEfl() override;
+
+  // content::RenderFrameObserver implementation.
+  void OnDestruct() override;
+
+  // blink::WebContentSettingsClient implementation.
+  void DidNotAllowScript() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ContentSettingsClientEfl);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_SETTINGS_CLIENT_EFL_H