[4.0] Implement WebEngineLite interface and plugin for Minimized Web Engine 40/148940/2
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 11 Sep 2017 07:16:07 +0000 (16:16 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Mon, 11 Sep 2017 08:01:28 +0000 (17:01 +0900)
Change-Id: Ibee1a63819896bd2cb9a13b015be83a3ddbd4496

14 files changed:
adaptors/common/file.list
adaptors/common/web-engine-lite-impl.cpp [new file with mode: 0644]
adaptors/common/web-engine-lite-impl.h [new file with mode: 0644]
adaptors/devel-api/adaptor-framework/web-engine-lite-plugin.h [new file with mode: 0644]
adaptors/devel-api/adaptor-framework/web-engine-lite.cpp [new file with mode: 0644]
adaptors/devel-api/adaptor-framework/web-engine-lite.h [new file with mode: 0644]
adaptors/devel-api/file.list
build/tizen/configure.ac
build/tizen/plugins/Makefile.am
build/tizen/plugins/configure.ac
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 dcc46c7..37faef3 100644 (file)
@@ -30,6 +30,7 @@ adaptor_common_internal_src_files = \
   $(adaptor_common_dir)/trigger-event-factory.cpp \
   $(adaptor_common_dir)/key-impl.cpp \
   $(adaptor_common_dir)/video-player-impl.cpp \
+  $(adaptor_common_dir)/web-engine-lite-impl.cpp \
   $(adaptor_common_dir)/events/gesture-manager.cpp \
   $(adaptor_common_dir)/events/long-press-gesture-detector.cpp \
   $(adaptor_common_dir)/events/pan-gesture-detector-base.cpp \
diff --git a/adaptors/common/web-engine-lite-impl.cpp b/adaptors/common/web-engine-lite-impl.cpp
new file mode 100644 (file)
index 0000000..d1c2e48
--- /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/adaptors/common/web-engine-lite-impl.h b/adaptors/common/web-engine-lite-impl.h
new file mode 100644 (file)
index 0000000..154e598
--- /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 <web-engine-lite.h>
+#include <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/adaptors/devel-api/adaptor-framework/web-engine-lite-plugin.h b/adaptors/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/adaptors/devel-api/adaptor-framework/web-engine-lite.cpp b/adaptors/devel-api/adaptor-framework/web-engine-lite.cpp
new file mode 100644 (file)
index 0000000..e5ffaff
--- /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 <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/adaptors/devel-api/adaptor-framework/web-engine-lite.h b/adaptors/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 0ce6e62..f9ee8f6 100644 (file)
@@ -26,6 +26,7 @@ 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/web-engine-lite.cpp \
   $(adaptor_devel_api_dir)/adaptor-framework/virtual-keyboard.cpp \
   $(adaptor_devel_api_dir)/adaptor-framework/window-devel.cpp
 
@@ -63,6 +64,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 \
index 98b840c..fc664fc 100644 (file)
@@ -30,9 +30,15 @@ AC_ARG_ENABLE([videoplayer],
               [enable_videoplayer=yes],
               [enable_videoplayer=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" || test "x$enable_videoplayer" = "xyes"; then
+if test "x$enable_feedback" = "xyes" || test "x$enable_videoplayer" = "xyes" || test "x$enable_web_engine_lite" = "xyes"; then
   # build dali-adaptor & plugins
   AC_CONFIG_SUBDIRS(plugins)
 fi
index 7e690be..d71d3d4 100644 (file)
@@ -31,6 +31,37 @@ if USE_FEEDBACK
 lib_LTLIBRARIES += libdali-feedback-plugin.la
 endif
 
+if USE_WEBENGINELITE
+lib_LTLIBRARIES += libdali-web_engine_lite-plugin.la
+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 \
+                      -Werror -Wall
+
+libdali_web_engine_lite_plugin_la_LIBADD = \
+                      $(DLOG_LIBS) \
+                      -llightweight-web-engine
+
+libdali_web_engine_lite_plugin_la_LDFLAGS = \
+                      -rdynamic
+
+endif # WEB_ENGINE_LITE
+
 if WAYLAND
 if USE_VIDEOPLAYER
 lib_LTLIBRARIES += libdali-video-player-plugin.la
index fc950ba..68871ea 100644 (file)
@@ -24,6 +24,7 @@ AM_CONDITIONAL([WAYLAND], [test x$enable_wayland = xyes])
 
 AM_CONDITIONAL([USE_FEEDBACK], [test x$enable_feedback = xyes])
 AM_CONDITIONAL([USE_VIDEOPLAYER], [test x$enable_videoplayer = 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])
@@ -50,6 +51,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
index 8eaedb1..766699f 100644 (file)
@@ -141,6 +141,10 @@ BuildRequires:  pkgconfig(feedback)
 # for videoplayer Plugin
 BuildRequires:  pkgconfig(capi-media-player)
 
+# for Web Engine Lite Plugin
+%if 0%{?enable_web_engine_lite}
+BuildRequires: lightweight-web-engine
+%endif
 
 # for multiprofile
 Requires:   %{name}-compat = %{version}-%{release}
@@ -384,6 +388,16 @@ Group:      System/Libraries
 VideoPlayer plugin to play a video file for Dali
 %endif
 
+##############################
+# 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
@@ -407,6 +421,16 @@ Group:      System/Libraries
 %description dali-video-player-plugin-cxx03
 VideoPlayer plugin to play a video file for Dali
 %endif
+
+##############################
+# 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
 
 ##############################
@@ -504,6 +528,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
@@ -547,6 +574,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
@@ -589,6 +619,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
@@ -631,6 +664,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
@@ -675,6 +711,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
@@ -727,6 +766,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
@@ -771,6 +813,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
@@ -814,6 +859,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
@@ -857,6 +905,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
@@ -901,6 +952,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
@@ -1039,6 +1093,11 @@ exit 0
 exit 0
 %endif
 
+#%if %{with wayland}
+%post dali-web-engine-lite-plugin
+/sbin/ldconfig
+exit 0
+#%endif
 
 ##############################
 
@@ -1232,6 +1291,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,-)
@@ -1251,6 +1318,14 @@ exit 0
 %endif
 
 %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 80f8b58..6c5871f 100644 (file)
@@ -5,3 +5,6 @@ feedback_plugin_src_files = \
 
 video_player_plugin_src_files = \
    $(plugin_src_dir)/video-player/tizen-video-player.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..9e0d60a
--- /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 <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