* 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
*/
virtual void Reset() = 0;
/**
- * Retrieve widget's model
- * @return WidgetModelPtr
- */
- virtual WidgetModelPtr GetModel() = 0;
- /**
* Reload start page on widget.
*/
virtual void ReloadStartPage() = 0;
*/
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() {};
};