[M85 Dev][EFL] Fix crashes at webview launch 68/244468/2
authorChandan Padhi <c.padhi@samsung.com>
Fri, 18 Sep 2020 13:13:32 +0000 (18:43 +0530)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Mon, 21 Sep 2020 08:17:03 +0000 (08:17 +0000)
This commit fixes the crashes at webview launch.

Change-Id: Idf73057001eaeca191550a5f3b29745e1c65767e
Signed-off-by: Chandan Padhi <c.padhi@samsung.com>
base/task/sequence_manager/sequence_manager_impl.cc
content/browser/renderer_host/render_widget_host_input_event_router.cc
tizen_src/ewk/efl_integration/ewk_global_data.cc
tizen_src/ewk/efl_integration/ewk_global_data.h

index 302062d..c6b6929 100644 (file)
@@ -307,14 +307,11 @@ void SequenceManagerImpl::BindToMessagePump(std::unique_ptr<MessagePump> pump) {
   }
 #endif
 
-  // On iOS attach to the native loop when there is one.
-#if defined(OS_IOS)
+  // On iOS/EFL attach to the native loop when there is one.
+#if defined(OS_IOS) || defined(USE_EFL)
   if (settings_.message_loop_type == MessagePumpType::UI) {
     controller_->AttachToMessagePump();
   }
-#elif defined(USE_EFL)
-  if (settings_.message_loop_type == MessagePumpType::UI)
-    controller_->AttachToMessagePump();
 #endif
 }
 
index f45da60..6040b48 100644 (file)
@@ -434,6 +434,12 @@ RenderWidgetHostInputEventRouter::RenderWidgetHostInputEventRouter()
       event_targeter_(std::make_unique<RenderWidgetTargeter>(this)),
       touch_event_ack_queue_(new TouchEventAckQueue(this)) {
   viz::HostFrameSinkManager* manager = GetHostFrameSinkManager();
+#if defined(EWK_BRINGUP)  // FIXME: m85 bringup
+  // viz::HostFrameSinkManager is not instantiated for EFL port. This
+  // can be removed when viz::HostFrameSinkManager is supported for EFL.
+  if (!manager)
+    return;
+#endif
   DCHECK(manager);
   manager->AddHitTestRegionObserver(this);
 }
index a2580fa..1d311d9 100644 (file)
@@ -9,6 +9,9 @@
 #include "base/message_loop/message_pump_for_ui_efl.h"
 #include "base/path_service.h"
 #include "browser/autofill/personal_data_manager_factory.h"
+#include "components/discardable_memory/service/discardable_shared_memory_manager.h"
+#include "content/app/service_manager_environment.h"
+#include "content/browser/browser_process_sub_thread.h"
 #include "content/browser/gpu/gpu_main_thread_factory.h"
 #include "content/browser/gpu/gpu_process_host.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
@@ -141,6 +144,16 @@ EwkGlobalData* EwkGlobalData::GetInstance() {
   content::StartBrowserThreadPool();
   content::BrowserTaskExecutor::Create();
 
+  instance_->discardable_shared_memory_manager_ =
+      std::make_unique<discardable_memory::DiscardableSharedMemoryManager>();
+
+  instance_->service_manager_environment_ =
+      std::make_unique<content::ServiceManagerEnvironment>(
+          content::BrowserTaskExecutor::CreateIOThread());
+  instance_->startup_data_ =
+      instance_->service_manager_environment_->CreateBrowserStartupData();
+  main_funtion_params.startup_data = instance_->startup_data_.get();
+
   instance_->browser_main_runner_ = BrowserMainRunner::Create();
   instance_->browser_main_runner_->Initialize(main_funtion_params);
 
index 5200cfc..00d6bdb 100644 (file)
@@ -5,14 +5,20 @@
 #ifndef EWK_GLOBAL_DATA_H_
 #define EWK_GLOBAL_DATA_H_
 
-#include <base/macros.h>
-#include <base/memory/ref_counted.h>
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "content/browser/startup_data_impl.h"
 #include "url_request_context_getter_efl.h"
 
+namespace discardable_memory {
+class DiscardableSharedMemoryManager;
+}
+
 namespace content {
   class BrowserMainRunner;
   class ContentMainRunner;
   class ContentMainDelegateEfl;
+  class ServiceManagerEnvironment;
 }
 
 class EwkGlobalData
@@ -34,6 +40,12 @@ class EwkGlobalData
 
   static EwkGlobalData* instance_;
 
+  std::unique_ptr<discardable_memory::DiscardableSharedMemoryManager>
+      discardable_shared_memory_manager_;
+  std::unique_ptr<content::StartupDataImpl> startup_data_;
+  std::unique_ptr<content::ServiceManagerEnvironment>
+      service_manager_environment_;
+
   // |browser_main_runner_| must be deleted first as it depends on
   // |content_main_runner_|. |content_main_delegate_efl_| must be deleted after
   // |content_main_runner_|.