update wrt_0.8.107
[platform/framework/web/wrt.git] / src / api_new / i_runnable_widget_object.h
index 1b1f0df..26dd362 100644 (file)
@@ -14,7 +14,7 @@
  *    limitations under the License.
  */
 /**
- * @file    core_module.cpp
+ * @file    i_runnable_widget_object.h
  * @author  Przemyslaw Ciezkowski (p.ciezkowski@samsung.com)
  * @version 1.0
  * @brief   File contains declaration of IRunnableWidgetObject interface.
 #define RUNNABLE_WIDGET_OBJECT_INTERFACE_H_
 
 #include <dpl/wrt-dao-ro/wrt_db_types.h>
+#include <dpl/fast_delegate.h>
 #include <memory>
 #include <Evas.h>
 #include <widget_model.h>
 
+#include <dpl/exception.h>
+
 namespace WRT {
 
-typedef struct UserCallbacks {
-    void (*progressFinish)(void *data);
-    void (*loadFinish)(bool success, void *data);
-    void (*webCrash)(void *data);
-    void (*windowClose)(void *data);
-    void (*resume)(bool success, void *data);
-    void (*suspend)(bool success, void *data);
-    void (*reset)(bool success, void *data);
-    void (*bufferUnset)(Evas_Object* currentBuffer, void *data);
-    void (*bufferSet)(Evas_Object* newBuffer, void *data);
+typedef DPL::FastDelegate0<void> ProgressFinishCB;
+typedef DPL::FastDelegate1<bool, void> LoadFinishCB;
+typedef DPL::FastDelegate0<void> WebCrashCB;
+typedef DPL::FastDelegate0<void> WindowCloseCB;
+typedef DPL::FastDelegate1<bool, void> ResumeCB;
+typedef DPL::FastDelegate1<bool, void> SuspendCB;
+typedef DPL::FastDelegate1<bool, void> ResetCB;
+typedef DPL::FastDelegate1<Evas_Object*, void> BufferUnsetCB;
+typedef DPL::FastDelegate1<Evas_Object*, void> BufferSetCB;
+typedef DPL::FastDelegate1<bool, void> ToggleFullscreenCB;
+
+typedef struct UserDelegates {
+    ProgressFinishCB progressFinish;
+    LoadFinishCB loadFinish;
+    WebCrashCB webCrash;
+    WindowCloseCB windowClose;
+    ResumeCB resume;
+    SuspendCB suspend;
+    ResetCB reset;
+    BufferUnsetCB bufferUnset;
+    BufferSetCB bufferSet;
+    ToggleFullscreenCB toggleFullscreen;
+} UserDelegates;
 
-    UserCallbacks():
-            progressFinish(NULL),
-            loadFinish(NULL),
-            windowClose(NULL),
-            resume(NULL),
-            suspend(NULL),
-            reset(NULL),
-            bufferUnset(NULL),
-            bufferSet(NULL)  {}
-} UserCallbacks;
-typedef std::shared_ptr<UserCallbacks> UserCallbacksPtr;
+typedef std::shared_ptr<UserDelegates> UserDelegatesPtr;
 typedef std::shared_ptr<WidgetModel> WidgetModelPtr;
 
+/**
+ * @brief The IRunnableWidgetObject class Runnable object interface
+ *
+ * Interface for managing WRT widgets runnable object.
+ * Methods should be called in approopriatte order. Check graph below.
+ *
+ *    /----------->(INITIAL)
+ *    |                |
+ *    |                | PrepareView()
+ *    |                V
+ *    |            (PREPARED)
+ *    |                |
+ *    | Reset()        | CheckBeforeLaunch()
+ *    |                V
+ *    |           (SECCHECKED)
+ *    |                |
+ *    |                | Show()
+ *    |                V
+ *    |             (SHOWED)
+ *    |               /  ^
+ *    |     Suspend() |  | Resume()
+ *    |               V  /
+ *    |            (SUSPENDED)
+ *    |
+ *    |
+ *    |     (any state besides INITIAL)
+ *    |                |
+ *    |                | Hide()
+ *    |                V
+ *    \-------------(HIDDEN)
+ *
+ */
 class IRunnableWidgetObject {
 public:
+    // IRunnableWidgetObject base exception
+    DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
+
+    // Throwed by any method if it is called in wrong state
+    DECLARE_EXCEPTION_TYPE(Base, MethodInvocationForbidden)
+
     /**
      * Runs OCSPCheck
      * @return false when widget is already running or
@@ -95,11 +139,6 @@ public:
      */
     virtual void Reset() = 0;
     /**
-     * Retrieve widget's model
-     * @return WidgetModelPtr
-     */
-    virtual WidgetModelPtr GetModel() = 0;
-    /**
      * Reload start page on widget.
      */
     virtual void ReloadStartPage() = 0;
@@ -109,13 +148,16 @@ public:
      */
     virtual Evas_Object* GetCurrentWebview() = 0;
     /**
-     * Register widget's callbacks
+     * Register widget's delegates
      */
-    virtual void SetUserCallbacks(UserCallbacksPtr cbs, void *data) = 0;
-    /*
+    virtual void SetUserDelegates(const UserDelegatesPtr& cbs) = 0;
+    /**
      * Call goBack() on webkit
      */
-    virtual void GoBack() = 0;
+    virtual void Backward() = 0;
+    virtual void Reload() = 0;
+    virtual void Forward() = 0;
+
     virtual ~IRunnableWidgetObject() {};
 };