[Tizen] Implement WebEngineLite interface and plugin for Minimized Web Engine 16/174016/1
authordongsug.song <dongsug.song@samsung.com>
Tue, 27 Mar 2018 06:36:53 +0000 (15:36 +0900)
committerdongsug.song <dongsug.song@samsung.com>
Tue, 27 Mar 2018 06:36:53 +0000 (15:36 +0900)
This reverts commit cf215877aa064f813eb2d67f1b2a45d124c7ecdb.

Conflicts:
build/tizen/adaptor/module.list

Change-Id: I809353e16c901689d45d0c2cc68922d1f194a212

16 files changed:
build/tizen/adaptor/Makefile.am
build/tizen/adaptor/module.list [changed mode: 0644->0755]
build/tizen/configure.ac
build/tizen/plugins/Makefile.am [changed mode: 0644->0755]
build/tizen/plugins/configure.ac
dali/devel-api/adaptor-framework/web-engine-lite-plugin.h [new file with mode: 0644]
dali/devel-api/adaptor-framework/web-engine-lite.cpp [new file with mode: 0644]
dali/devel-api/adaptor-framework/web-engine-lite.h [new file with mode: 0644]
dali/devel-api/file.list
dali/internal/web-engine-lite/common/web-engine-lite-impl.cpp [new file with mode: 0644]
dali/internal/web-engine-lite/common/web-engine-lite-impl.h [new file with mode: 0644]
dali/internal/web-engine-lite/file.list [new file with mode: 0644]
packaging/dali-adaptor.spec
plugins/file.list
plugins/tizen-web-engine-lite.cpp [new file with mode: 0644]
plugins/tizen-web-engine-lite.h [new file with mode: 0644]

index 278db2c..3f699fa 100644 (file)
@@ -64,6 +64,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_ubuntu_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_ubuntu_x11_src_files) \
                   $(devel_api_text_abstraction_src_files) \
@@ -108,6 +109,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_common_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_tizen_mobile_src_files) \
                   $(adaptor_window_system_tizen_src_files) \
@@ -155,6 +157,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_common_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_tizen_src_files) \
                   $(adaptor_window_system_tizen_wayland_src_files) \
@@ -200,6 +203,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_common_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_tizen_src_files) \
                   $(adaptor_window_system_tizen_wayland_src_files) \
@@ -244,6 +248,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_common_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_tizen_src_files) \
                   $(adaptor_window_system_tizen_wayland_src_files) \
@@ -291,6 +296,7 @@ LIBDALI_ADAPTOR_LA_SOURCES = \
                   $(adaptor_text_common_src_files) \
                   $(adaptor_resampler_src_files) \
                   $(adaptor_video_common_src_files) \
+                  $(adaptor_web_engine_common_src_files) \
                   $(adaptor_window_system_common_src_files) \
                   $(adaptor_window_system_tizen_src_files) \
                   $(adaptor_window_system_tizen_wayland_src_files) \
old mode 100644 (file)
new mode 100755 (executable)
index 0478c3c..34a676d
@@ -55,7 +55,11 @@ include ../../../dali/internal/text/file.list
 adaptor_video_dir = ../../../dali/internal/video
 include ../../../dali/internal/video/file.list
 
-# Module: window-system
+# Module: web-engine-lite
+adaptor_web_engine_dir = ../../../dali/internal/web-engine-lite
+include ../../../dali/internal/web-engine-lite/file.list
+
+# Module: window-system 
 adaptor_window_system_dir = ../../../dali/internal/window-system
 include ../../../dali/internal/window-system/file.list
 
index c0d295d..0197e4f 100644 (file)
@@ -24,9 +24,15 @@ AC_ARG_ENABLE([feedback],
               [enable_feedback=yes],
               [enable_feedback=no])
 
+AC_ARG_ENABLE([web_engine_lite],
+              [AC_HELP_STRING([ --enable-web-engine-lite],
+                              [Enable web engine lite plugin])],
+              [enable_web_engine_lite=yes],
+              [enable_web_engine_lite=no])
+
 AC_CONFIG_SUBDIRS(adaptor)
 
-if test "x$enable_feedback" = "xyes"; then
+if test "x$enable_feedback" = "xyes"|| test "x$enable_web_engine_lite" = "xyes"; then
   # build dali-adaptor & plugins
   AC_CONFIG_SUBDIRS(plugins)
 fi
old mode 100644 (file)
new mode 100755 (executable)
index bdbd546..1197157
@@ -31,12 +31,20 @@ if USE_FEEDBACK
 lib_LTLIBRARIES += libdali-feedback-plugin.la
 endif
 
+if USE_WEBENGINELITE
+lib_LTLIBRARIES += libdali-web-engine-lite-plugin.la
+endif
+
 else # ENABLE_CXX03_ABI
 
 if USE_FEEDBACK
 lib_LTLIBRARIES += libdali-feedback-plugin-cxx11.la
 endif
 
+if USE_WEBENGINELITE
+lib_LTLIBRARIES += libdali-web-engine-lite-plugin-cxx11.la
+endif
+
 endif # ENABLE_CXX03_ABI
 
 if USE_FEEDBACK
@@ -73,6 +81,35 @@ LIBDALI_FEEDBACK_PLUGIN_LA_LIBADD += \
 
 endif
 
+if USE_WEBENGINELITE
+LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_SOURCES = \
+                     $(web_engine_lite_plugin_src_files)
+
+libdali_web_engine_lite_plugin_la_DEPENDENCIES =
+
+LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_CXXFLAGS = -DDALI_COMPILATION \
+                      $(DLOG_CFLAGS) \
+                      $(DALICORE_CFLAGS) \
+                      $(WEB_ENGINE_LITE_CFLAGS) \
+                      $(DALI_PROFILE_CFLAGS) \
+                      $(DALI_ADAPTOR_CFLAGS) \
+                      -I../../../adaptors/public-api \
+                      -I../../../adaptors/integration-api \
+                      -I../../../adaptors/public-api/adaptor-framework \
+                      -I../../../adaptors/devel-api/adaptor-framework \
+                      -I/usr/include/lightweight-web-engine \
+                      -Werror -Wall
+
+LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LIBADD = \
+                      $(DALICORE_LIBS) \
+                      $(DLOG_LIBS) \
+                      -llightweight-web-engine
+
+LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LDFLAGS = \
+                      -rdynamic
+
+endif # WEB_ENGINE_LITE
+
 if ENABLE_CXX03_ABI
 
 if USE_FEEDBACK
@@ -90,6 +127,21 @@ install: install-am
 endif
 endif
 
+if USE_WEBENGINELITE
+libdali_web_engine_lite_plugin_la_SOURCES = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_SOURCES)
+libdali_web_engine_lite_plugin_la_LIBADD = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LIBADD)
+libdali_web_engine_lite_plugin_la_CXXFLAGS = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_CXXFLAGS)
+libdali_web_engine_lite_plugin_la_LDFLAGS = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LDFLAGS)
+
+if ENABLE_RENAME_SO
+#rename
+install: install-am
+       rm -rf $(libdir)/libdali_web_engine_lite_plugin.so
+       rm -rf $(libdir)/libdali_web_engine_lite_plugin-cxx03.so
+       ln -s $(libdir)/libdali_web_engine_lite_plugin.so.0.0.* $(libdir)/libdali_web_engine_lite_plugin-cxx03.so
+endif
+endif
+
 else # CXX03
 
 if USE_FEEDBACK
@@ -107,4 +159,19 @@ install: install-am
 endif
 endif
 
+if USE_WEBENGINELITE
+libdali_web_engine_lite_plugin_cxx11_la_SOURCES = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_SOURCES)
+libdali_web_engine_lite_plugin_cxx11_la_LIBADD = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LIBADD)
+libdali_web_engine_lite_plugin_cxx11_la_CXXFLAGS = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_CXXFLAGS)
+libdali_web_engine_lite_plugin_cxx11_la_LDFLAGS = $(LIBDALI_WEB_ENGINE_LITE_PLUGIN_LA_LDFLAGS)
+
+if ENABLE_RENAME_SO
+#rename
+install: install-am
+       rm -rf $(libdir)/libdali_web_engine_lite_plugin-cxx11.so
+       rm -rf $(libdir)/libdali_web_engine_lite_plugin.so
+       ln -s $(libdir)/libdali_web_engine_lite_plugin-cxx11.so.0.0.* $(libdir)/libdali_web_engine_lite_plugin.so
+endif
+endif
+
 endif # CXX03
index 83b8a95..cabafda 100644 (file)
@@ -23,6 +23,7 @@ AM_CONDITIONAL([UBUNTU_PROFILE], [test x$enable_profile = xUBUNTU])
 AM_CONDITIONAL([WAYLAND], [test x$enable_wayland = xyes])
 
 AM_CONDITIONAL([USE_FEEDBACK], [test x$enable_feedback = xyes])
+AM_CONDITIONAL([USE_WEBENGINELITE], [test x$enable_web_engine_lite = xyes])
 
 AM_CONDITIONAL([ENABLE_CXX03_ABI], [test x$enable_cxx03_abi = xyes])
 AM_CONDITIONAL([ENABLE_RENAME_SO], [test x$enable_rename_so = xyes])
@@ -40,6 +41,16 @@ PKG_CHECK_MODULES(MMFSOUND, mm-sound)
 fi # check UNBUNTU
 fi # enable_feedback
 
+if test "x$enable_web_engine_lite" = "xyes"; then
+if test "x$enable_profile" != "xUBUNTU"; then
+
+PKG_CHECK_MODULES(FEEDBACK, feedback)
+PKG_CHECK_MODULES(WEBENGINELITE, lightweight-web-engine)
+#PKG_CHECK_MODULES(MMFSOUND, mm-sound)
+
+fi # check UNBUNTU
+fi # enable_web_engine_lite
+
 AC_CONFIG_FILES(Makefile)
 
 AC_OUTPUT
diff --git a/dali/devel-api/adaptor-framework/web-engine-lite-plugin.h b/dali/devel-api/adaptor-framework/web-engine-lite-plugin.h
new file mode 100644 (file)
index 0000000..d60f9b7
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef __DALI_WEBENGINELITE_PLUGIN_H__
+#define __DALI_WEBENGINELITE_PLUGIN_H__
+
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/signals/dali-signal.h>
+
+namespace Dali
+{
+
+/**
+ * @brief WebEngineLitePlugin is an abstract interface, used by dali-adaptor to access WebEngineLite plugin.
+ * A concrete implementation must be created for each platform and provided as dynamic library.
+ */
+class WebEngineLitePlugin
+{
+public:
+
+  typedef Signal< void () > WebEngineLiteSignalType;
+
+  /**
+   * @brief Constructor.
+   */
+  WebEngineLitePlugin(){}
+
+  /**
+   * @brief Destructor.
+   */
+  virtual ~WebEngineLitePlugin(){}
+
+  /**
+   * @brief Creates WebEngineLite instance.
+   *
+   * @param [in] width The width of Web
+   * @param [in] height The height of Web
+   * @param [in] windowX The x position of window
+   * @param [in] windowY The y position of window
+   * @param [in] locale The locale of Web
+   * @param [in] timezoneID The timezoneID of Web
+   */
+  virtual void CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID) = 0;
+
+  /**
+   * @brief Destroys WebEngineLite instance.
+   */
+  virtual void DestroyInstance() = 0;
+
+  /**
+   * @brief Loads a html.
+   *
+   * @param [in] path The path of Web
+   */
+  virtual void LoadHtml(const std::string& path) = 0;
+
+  /**
+   * @brief Connect to this signal to be notified when a web view has finished.
+   *
+   * @return A signal object to connect with.
+   */
+  virtual WebEngineLiteSignalType& FinishedSignal() = 0;
+
+};
+
+} // namespace Dali;
+
+#endif
diff --git a/dali/devel-api/adaptor-framework/web-engine-lite.cpp b/dali/devel-api/adaptor-framework/web-engine-lite.cpp
new file mode 100644 (file)
index 0000000..f800a62
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include "web-engine-lite.h"
+
+// INTERNAL INCLUDES
+#include <dali/internal/web-engine-lite/common/web-engine-lite-impl.h>
+
+namespace Dali
+{
+
+WebEngineLite::WebEngineLite()
+{
+}
+
+WebEngineLite::WebEngineLite( Internal::Adaptor::WebEngineLite* internal )
+: BaseHandle( internal )
+{
+}
+
+WebEngineLite::~WebEngineLite()
+{
+}
+
+WebEngineLite WebEngineLite::New()
+{
+  Internal::Adaptor::WebEngineLitePtr webEngineLite = Internal::Adaptor::WebEngineLite::New();
+
+  if( webEngineLite )
+  {
+    webEngineLite->Initialize();
+  }
+
+  return WebEngineLite( webEngineLite.Get() );
+}
+
+WebEngineLite::WebEngineLite( const WebEngineLite& webEngineLite )
+: BaseHandle( webEngineLite )
+{
+}
+
+WebEngineLite& WebEngineLite::operator=( const WebEngineLite& webEngineLite )
+{
+  if( *this != webEngineLite )
+  {
+    BaseHandle::operator=( webEngineLite );
+  }
+  return *this;
+}
+
+WebEngineLite WebEngineLite::DownCast( BaseHandle handle )
+{
+  return WebEngineLite( dynamic_cast< Internal::Adaptor::WebEngineLite* >( handle.GetObjectPtr() ) );
+}
+
+void WebEngineLite::CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID)
+{
+  GetImplementation( *this ).CreateInstance(width, height, windowX, windowY, locale, timezoneID);
+}
+
+void WebEngineLite::DestroyInstance()
+{
+  GetImplementation( *this ).DestroyInstance();
+}
+
+void WebEngineLite::LoadHtml(const std::string& path)
+{
+  return GetImplementation( *this ).LoadHtml(path);
+}
+
+Dali::WebEngineLitePlugin::WebEngineLiteSignalType& WebEngineLite::FinishedSignal()
+{
+  return GetImplementation( *this ).FinishedSignal();
+}
+
+} // namespace Dali;
+
diff --git a/dali/devel-api/adaptor-framework/web-engine-lite.h b/dali/devel-api/adaptor-framework/web-engine-lite.h
new file mode 100644 (file)
index 0000000..1967695
--- /dev/null
@@ -0,0 +1,130 @@
+#ifndef __DALI_WEBENGINELITE_H__
+#define __DALI_WEBENGINELITE_H__
+
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/object/base-handle.h>
+
+//INTERNAL INCLUDES
+#include "web-engine-lite-plugin.h"
+
+namespace Dali
+{
+
+namespace Internal
+{
+
+namespace Adaptor
+{
+  class WebEngineLite;
+} // namespace Adaptor
+
+} // namespace Internal
+
+/**
+ * @brief WebEngineLite class is used for Web.
+ */
+class DALI_IMPORT_API WebEngineLite: public BaseHandle
+{
+public:
+
+  /**
+   * @brief Constructor.
+   */
+  WebEngineLite();
+
+  /**
+   * @brief Destructor.
+   */
+  ~WebEngineLite();
+
+  /**
+   * @brief Creates a new instance of a WebEngineLite.
+   */
+  static WebEngineLite New();
+
+ /**
+   * @brief Copy constructor.
+   *
+   * @param[in] webEngineLite WebEngineLite to copy. The copied webEngineLite will point at the same implementation
+   */
+  WebEngineLite( const WebEngineLite& webEngineLite );
+
+ /**
+   * @brief Assignment operator.
+   *
+   * @param[in] webEngineLite The WebEngineLite to assign from.
+   * @return The updated WebEngineLite.
+   */
+  WebEngineLite& operator=( const WebEngineLite& webEngineLite );
+
+  /**
+   * @brief Downcast a handle to WebEngineLite handle.
+   *
+   * If handle points to a WebEngineLite the downcast produces valid
+   * handle. If not the returned handle is left uninitialized.
+   *
+   * @param[in] handle Handle to an object
+   * @return Handle to a WebEngineLite or an uninitialized handle
+   */
+  static WebEngineLite DownCast( BaseHandle handle );
+
+  /**
+   * @brief Creates WebEngineLite instance.
+   *
+   * @param [in] width The width of Web
+   * @param [in] height The height of Web
+   * @param [in] windowX The x position of window
+   * @param [in] windowY The y position of window
+   * @param [in] locale The locale of Web
+   * @param [in] timezoneID The timezoneID of Web
+   */
+  void CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID);
+
+  /**
+   * @brief Destroys WebEngineLite instance.
+   */
+  void DestroyInstance();
+
+  /**
+   * @brief Loads a html.
+   *
+   * @param [in] path The path of Web
+   */
+  void LoadHtml(const std::string& path);
+
+  /**
+   * @brief Connect to this signal to be notified when a web view has finished.
+   *
+   * @return A signal object to connect with.
+   */
+  Dali::WebEngineLitePlugin::WebEngineLiteSignalType& FinishedSignal();
+
+private: // Not intended for application developers
+
+  /**
+   * @brief Internal constructor
+   */
+  explicit DALI_INTERNAL WebEngineLite( Internal::Adaptor::WebEngineLite* internal );
+};
+
+} // namespace Dali;
+
+#endif
+
index 6ca2599..63df564 100644 (file)
@@ -26,7 +26,8 @@ devel_api_src_files = \
   $(adaptor_devel_api_dir)/adaptor-framework/tilt-sensor.cpp \
   $(adaptor_devel_api_dir)/adaptor-framework/lifecycle-controller.cpp \
   $(adaptor_devel_api_dir)/adaptor-framework/video-player.cpp \
-  $(adaptor_devel_api_dir)/adaptor-framework/virtual-keyboard.cpp
+  $(adaptor_devel_api_dir)/adaptor-framework/virtual-keyboard.cpp \
+  $(adaptor_devel_api_dir)/adaptor-framework/web-engine-lite.cpp
 
 
 devel_api_adaptor_framework_header_files = \
@@ -62,6 +63,8 @@ devel_api_adaptor_framework_header_files = \
   $(adaptor_devel_api_dir)/adaptor-framework/tilt-sensor.h \
   $(adaptor_devel_api_dir)/adaptor-framework/video-player.h \
   $(adaptor_devel_api_dir)/adaptor-framework/video-player-plugin.h \
+  $(adaptor_devel_api_dir)/adaptor-framework/web-engine-lite.h \
+  $(adaptor_devel_api_dir)/adaptor-framework/web-engine-lite-plugin.h \
   $(adaptor_devel_api_dir)/adaptor-framework/key-extension-plugin.h \
   $(adaptor_devel_api_dir)/adaptor-framework/virtual-keyboard.h \
   $(adaptor_devel_api_dir)/adaptor-framework/physical-keyboard.h \
diff --git a/dali/internal/web-engine-lite/common/web-engine-lite-impl.cpp b/dali/internal/web-engine-lite/common/web-engine-lite-impl.cpp
new file mode 100644 (file)
index 0000000..8b399b3
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include "web-engine-lite-impl.h"
+
+// EXTERNAL INCLUDES
+#include <dlfcn.h>
+#include <dali/integration-api/debug.h>
+#include <dali/public-api/object/type-registry.h>
+#include <dali/public-api/object/any.h>
+
+
+namespace Dali
+{
+
+namespace Internal
+{
+
+namespace Adaptor
+{
+
+namespace // unnamed namespace
+{
+const char* WEB_ENGINE_LITE_PLUGIN_SO( "libdali-web-engine-lite-plugin.so" );
+
+Dali::BaseHandle Create()
+{
+  return Dali::WebEngineLite::New();
+}
+
+Dali::TypeRegistration type( typeid( Dali::WebEngineLite ), typeid( Dali::BaseHandle ), Create );
+
+} // unnamed namespace
+
+WebEngineLitePtr WebEngineLite::New()
+{
+  WebEngineLitePtr webEngineLite = new WebEngineLite();
+  return webEngineLite;
+}
+
+WebEngineLite::WebEngineLite()
+: mPlugin( NULL ),
+  mHandle( NULL ),
+  mCreateWebEngineLitePtr( NULL ),
+  mDestroyWebEngineLitePtr( NULL )
+{
+}
+
+WebEngineLite::~WebEngineLite()
+{
+  if( mHandle != NULL )
+  {
+    if( mDestroyWebEngineLitePtr != NULL )
+    {
+      mDestroyWebEngineLitePtr( mPlugin );
+    }
+
+    dlclose( mHandle );
+  }
+}
+
+void WebEngineLite::Initialize()
+{
+  char* error = NULL;
+
+  mHandle = dlopen( WEB_ENGINE_LITE_PLUGIN_SO, RTLD_LAZY );
+
+  error = dlerror();
+  if( mHandle == NULL || error != NULL )
+  {
+    DALI_LOG_ERROR( "WebEngineLite::Initialize(), dlopen error: %s\n", error );
+    return;
+  }
+
+  mCreateWebEngineLitePtr = reinterpret_cast< CreateWebEngineLiteFunction >( dlsym( mHandle, "CreateWebEngineLitePlugin" ) );
+  if( mCreateWebEngineLitePtr == NULL )
+  {
+    DALI_LOG_ERROR( "Can't load symbol CreateWebEngineLitePlugin(), error: %s\n", error );
+    return;
+  }
+
+  mPlugin = mCreateWebEngineLitePtr();
+
+  if( mPlugin == NULL )
+  {
+    DALI_LOG_ERROR( "Can't create the WebEngineLitePlugin object\n" );
+    return;
+  }
+
+  mDestroyWebEngineLitePtr = reinterpret_cast< DestroyWebEngineLiteFunction >( dlsym( mHandle, "DestroyWebEngineLitePlugin" ) );
+  if( mDestroyWebEngineLitePtr == NULL )
+  {
+    DALI_LOG_ERROR( "Can't load symbol DestroyWebEngineLitePlugin(), error: %s\n", error );
+    return;
+  }
+
+}
+
+void WebEngineLite::CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID)
+{
+  if( mPlugin != NULL )
+  {
+    mPlugin->CreateInstance(width, height, windowX, windowY, locale, timezoneID);
+  }
+}
+
+void WebEngineLite::DestroyInstance()
+{
+  if( mPlugin != NULL )
+  {
+    mPlugin->DestroyInstance();
+  }
+}
+
+void WebEngineLite::LoadHtml(const std::string& path)
+{
+  if( mPlugin != NULL )
+  {
+    mPlugin->LoadHtml(path);
+  }
+}
+
+Dali::WebEngineLitePlugin::WebEngineLiteSignalType& WebEngineLite::FinishedSignal()
+{
+  if( mPlugin != NULL )
+  {
+    return mPlugin->FinishedSignal();
+  }
+
+  return mFinishedSignal;
+}
+
+} // namespace Adaptor;
+} // namespace Internal;
+} // namespace Dali;
+
diff --git a/dali/internal/web-engine-lite/common/web-engine-lite-impl.h b/dali/internal/web-engine-lite/common/web-engine-lite-impl.h
new file mode 100644 (file)
index 0000000..8b9e70b
--- /dev/null
@@ -0,0 +1,137 @@
+#ifndef __DALI_WEBENGINELITE_IMPL_H__
+#define __DALI_WEBENGINELITE_IMPL_H__
+
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/object/base-object.h>
+
+// INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/web-engine-lite.h>
+#include <dali/devel-api/adaptor-framework/web-engine-lite-plugin.h>
+
+namespace Dali
+{
+class Any;
+
+namespace Internal
+{
+
+namespace Adaptor
+{
+
+class WebEngineLite;
+
+typedef IntrusivePtr< WebEngineLite > WebEngineLitePtr;
+
+/**
+ * @brief WebEngineLite class is used for Web.
+ */
+class WebEngineLite: public Dali::BaseObject
+{
+public:
+
+  /**
+   * @brief Creates a new WebEngineLite handle
+   *
+   * @return WebEngineLite pointer
+   */
+  static WebEngineLitePtr New();
+
+  /**
+   * @copydoc Dali::WebEngineLite::CreateInstance()
+   */
+  void CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID);
+
+  /**
+   * @copydoc Dali::WebEngineLite::DestroyInstance()
+   */
+  void DestroyInstance();
+
+  /**
+   * @copydoc Dali::WebEngineLite::LoadHtml()
+   */
+  void LoadHtml(const std::string& path);
+
+  /**
+   * @copydoc Dali::WebEngineLite::FinishedSignal()
+   */
+  Dali::WebEngineLitePlugin::WebEngineLiteSignalType& FinishedSignal();
+
+  /**
+   * @brief Initializes member data.
+   */
+  void Initialize();
+
+private:
+
+  /**
+   * @brief Constructor.
+   */
+  WebEngineLite();
+
+  /**
+   * @brief Destructor.
+   */
+  virtual ~WebEngineLite();
+
+  // Undefined copy constructor
+  WebEngineLite( const WebEngineLite& webEngineLite );
+
+  // Undefined assignment operator
+  WebEngineLite& operator=( const WebEngineLite& webEngineLite );
+
+private:
+
+  Dali::WebEngineLitePlugin* mPlugin; ///< WebEngineLite plugin handle
+  void* mHandle; ///< Handle for the loaded library
+
+  typedef Dali::WebEngineLitePlugin* (*CreateWebEngineLiteFunction)();
+  typedef void (*DestroyWebEngineLiteFunction)( Dali::WebEngineLitePlugin* plugin );
+
+  CreateWebEngineLiteFunction mCreateWebEngineLitePtr;
+  DestroyWebEngineLiteFunction mDestroyWebEngineLitePtr;
+
+  Dali::WebEngineLitePlugin::WebEngineLiteSignalType mFinishedSignal;
+};
+
+} // namespace Adaptor
+} // namespace Internal
+
+inline static Internal::Adaptor::WebEngineLite& GetImplementation( Dali::WebEngineLite& webEngineLite )
+{
+  DALI_ASSERT_ALWAYS( webEngineLite && "WebEngineLite handle is empty." );
+
+  BaseObject& handle = webEngineLite.GetBaseObject();
+
+  return static_cast< Internal::Adaptor::WebEngineLite& >( handle );
+}
+
+inline static const Internal::Adaptor::WebEngineLite& GetImplementation( const Dali::WebEngineLite& webEngineLite )
+{
+  DALI_ASSERT_ALWAYS( webEngineLite && "WebEngineLite handle is empty." );
+
+  const BaseObject& handle = webEngineLite.GetBaseObject();
+
+  return static_cast< const Internal::Adaptor::WebEngineLite& >( handle );
+}
+
+} // namespace Dali;
+
+#endif
+
diff --git a/dali/internal/web-engine-lite/file.list b/dali/internal/web-engine-lite/file.list
new file mode 100644 (file)
index 0000000..f78c4ed
--- /dev/null
@@ -0,0 +1,5 @@
+
+
+# module: web-engine, backend: common
+adaptor_web_engine_common_src_files=\
+    ${adaptor_web_engine_dir}/common/web-engine-lite-impl.cpp
index 1d45765..3c87990 100644 (file)
@@ -138,6 +138,12 @@ BuildRequires:  pkgconfig(mm-sound)
 BuildRequires:  pkgconfig(feedback)
 %endif
 
+# for Web Engine Lite Plugin
+%if 0%{?enable_web_engine_lite}
+BuildRequires: lightweight-web-engine
+BuildRequires: lightweight-web-engine-devel
+%endif
+
 # for multiprofile
 Requires:   %{name}-compat = %{version}-%{release}
 Recommends: %{name}-profile_common = %{version}-%{release}
@@ -368,6 +374,16 @@ Requires:   %{name} = %{version}-%{release}
 %description dali-feedback-plugin
 Feedback plugin to play haptic and audio feedback for Dali
 
+##############################
+# Dali WebEngineLite Plugin
+##############################
+
+%package dali-web-engine-lite-plugin
+Summary:    Plugin WebEngineLite for Dali
+Group:      System/Libraries
+%description dali-web-engine-lite-plugin
+WebEngineLite plugin for Dali
+
 %if !0%{?disable_cxx03_build}
 ##############################
 # Dali Feedback Plugin cxx03
@@ -380,6 +396,15 @@ Requires:   %{name}-cxx03 = %{version}-%{release}
 %description dali-feedback-plugin-cxx03
 Feedback plugin to play haptic and audio feedback for Dali
 
+##############################
+# Dali WebEngineLite Plugin
+##############################
+
+%package dali-web-engine-lite-plugin-cxx03
+Summary:    Plugin WebEngineLite for Dali with cxx03 abi
+Group:      System/Libraries
+%description dali-web-engine-lite-plugin-cxx03
+WebEngineLite plugin for Dali
 %endif
 
 ##############################
@@ -476,6 +501,9 @@ TIZEN_PLATFORM_CONFIG_SUPPORTED="%{tizen_platform_config_supported}" ; export TI
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -518,6 +546,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -559,6 +590,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -600,6 +634,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -643,6 +680,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -694,6 +734,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -737,6 +780,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -779,6 +825,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -821,6 +870,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -864,6 +916,9 @@ make clean
 %else
            --enable-efl=yes \
 %endif
+%if 0%{?enable_web_engine_lite}
+           --enable-web-engine-lite \
+%endif
 %if 0%{?enable_debug}
            --enable-debug \
 %endif
@@ -990,6 +1045,12 @@ exit 0
 /sbin/ldconfig
 exit 0
 
+#%if %{with wayland}
+%post dali-web-engine-lite-plugin
+/sbin/ldconfig
+exit 0
+#%endif
+
 ##############################
 
 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
@@ -1174,6 +1235,14 @@ exit 0
 #%endif
 
 %if 0%{?tizen_version_major} >= 3
+%if 0%{?enable_web_engine_lite}
+%files dali-web-engine-lite-plugin-cxx03
+%manifest dali-adaptor.manifest
+%defattr(-,root,root,-)
+%{_libdir}/libdali-web-engine-lite-plugin.so*
+%license LICENSE
+%endif
+
 %files dali-feedback-plugin-cxx03
 %manifest dali-adaptor.manifest
 %defattr(-,root,root,-)
@@ -1185,6 +1254,14 @@ exit 0
 #################################################
 
 %if 0%{?tizen_version_major} >= 3
+%if 0%{?enable_web_engine_lite}
+%files dali-web-engine-lite-plugin
+%manifest dali-adaptor.manifest
+%defattr(-,root,root,-)
+%{_libdir}/libdali-web-engine-lite-plugin-cxx11.so*
+%license LICENSE
+%endif
+
 %files dali-feedback-plugin
 %manifest dali-adaptor.manifest
 %defattr(-,root,root,-)
index 80ab92b..8b5f618 100644 (file)
@@ -2,3 +2,6 @@
 
 feedback_plugin_src_files = \
    $(plugin_src_dir)/dali-feedback.cpp
+
+web_engine_lite_plugin_src_files = \
+   $(plugin_src_dir)/tizen-web-engine-lite.cpp
\ No newline at end of file
diff --git a/plugins/tizen-web-engine-lite.cpp b/plugins/tizen-web-engine-lite.cpp
new file mode 100644 (file)
index 0000000..36aa1fb
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include "tizen-web-engine-lite.h"
+
+// The plugin factories
+extern "C" DALI_EXPORT_API Dali::WebEngineLitePlugin* CreateWebEngineLitePlugin( void )
+{
+  return new Dali::Plugin::TizenWebEngineLite;
+}
+
+extern "C" DALI_EXPORT_API void DestroyWebEngineLitePlugin( Dali::WebEngineLitePlugin* plugin )
+{
+  if( plugin != NULL )
+  {
+    delete plugin;
+  }
+}
+
+namespace Dali
+{
+
+namespace Plugin
+{
+
+namespace
+{
+} // unnamed namespace
+
+TizenWebEngineLite::TizenWebEngineLite()
+: mWebEngineLiteInstance( NULL )
+{
+}
+
+TizenWebEngineLite::~TizenWebEngineLite()
+{
+}
+
+void TizenWebEngineLite::CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID)
+{
+  mWebEngineLiteInstance = starfishCreate(NULL, width, height, windowX, windowY, locale.c_str(), timezoneID.c_str(), 1);
+}
+
+void TizenWebEngineLite::DestroyInstance()
+{
+  starfishRemove(mWebEngineLiteInstance);
+}
+
+void TizenWebEngineLite::LoadHtml(const std::string& path)
+{
+  starfishLoadHTMLDocument(mWebEngineLiteInstance, path.c_str());
+}
+
+Dali::WebEngineLitePlugin::WebEngineLiteSignalType& TizenWebEngineLite::FinishedSignal()
+{
+  return mFinishedSignal;
+}
+
+} // namespace Plugin
+} // namespace Dali;
diff --git a/plugins/tizen-web-engine-lite.h b/plugins/tizen-web-engine-lite.h
new file mode 100644 (file)
index 0000000..bda8ca3
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef __DALI_TIZEN_WebEngineLite_PLUGIN_H__
+#define __DALI_TIZEN_WebEngineLite_PLUGIN_H__
+
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/devel-api/threading/mutex.h>
+#include <string>
+
+// INTERNAL INCLUDES
+#include "StarFishPublic.h"
+#include <dali/devel-api/adaptor-framework/web-engine-lite-plugin.h>
+#include <timer.h>
+
+namespace Dali
+{
+
+namespace Plugin
+{
+
+/**
+ * @brief Implementation of the Tizen WebEngineLite class which has Tizen platform dependency.
+ */
+class TizenWebEngineLite : public Dali::WebEngineLitePlugin, public Dali::ConnectionTracker
+{
+public:
+
+  /**
+   * @brief Constructor.
+   */
+  TizenWebEngineLite();
+
+  /**
+   * @brief Destructor.
+   */
+  virtual ~TizenWebEngineLite();
+
+  /**
+   * @copydoc Dali::WebEngineLitePlugin::CreateInstance()
+   */
+  virtual void CreateInstance(int width, int height, int windowX, int windowY, const std::string& locale, const std::string& timezoneID);
+
+  /**
+   * @copydoc Dali::WebEngineLitePlugin::DestroyInstance()
+   */
+  virtual void DestroyInstance();
+
+  /**
+   * @copydoc Dali::WebEngineLitePlugin::LoadHtml()
+   */
+  virtual void LoadHtml(const std::string& path);
+
+  /**
+   * @copydoc Dali::WebEngineLitePlugin::FinishedSignal()
+   */
+  virtual Dali::WebEngineLitePlugin::WebEngineLiteSignalType& FinishedSignal();
+
+private:
+  StarFishInstance* mWebEngineLiteInstance;
+
+public:
+
+  Dali::WebEngineLitePlugin::WebEngineLiteSignalType mFinishedSignal;
+};
+
+} // namespace Plugin
+} // namespace Dali;
+
+#endif