Implement delegate callback for navigation decision on default livebox plugin
authorYunchan Cho <yunchan.cho@samsung.com>
Wed, 24 Apr 2013 05:56:21 +0000 (14:56 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Sat, 27 Apr 2013 15:22:45 +0000 (00:22 +0900)
[Issue#] N/A
[Problem] There is no interface that handles 'box' scheme on livebox plugin
          This interface is needed for AppWidget Web API to be used by Box and PD content of default livebox
[Cause] This interface is not considered by now, because requirement of AppWidget Web API is newly added.
[Solution] wrt delegate callback for this is added, this callback is implemented in default livebox plugin.
[SCMRequest] This patch is dependancy to the following patch of 'wrt' package
             https://tizendev.org/gerrit/#/c/64349/

Change-Id: I2b6eb845d17464d199c551d7ecc313dbd29b8536

src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp
src/Plugin/AppBoxPlugin/AppBoxRenderView.h

index ff88f32..17c0370 100644 (file)
@@ -28,6 +28,7 @@
 #include <i_runnable_widget_object.h>
 #include <core_module.h>
 #include <dpl/fast_delegate.h>
+#include <Core/BoxSchemeHandler.h>
 #include <Core/View/IRenderView.h>
 #include <Core/View/IPdHelper.h>
 #include <Core/View/PdHelper.h>
@@ -145,6 +146,7 @@ bool AppBoxRenderView::createView()
     cbs->bufferUnset = DPL::MakeDelegate(this, &AppBoxRenderView::unsetBufferCallback);
     cbs->windowCreateBefore = DPL::MakeDelegate(this, &AppBoxRenderView::createWindowBeforeCallback);
     cbs->windowCreateAfter = DPL::MakeDelegate(this, &AppBoxRenderView::createWindowAfterCallback);
+    cbs->navigationDecide = DPL::MakeDelegate(this, &AppBoxRenderView::decideNavigationCallback);
     m_view->SetUserDelegates(cbs);
 
     // set base webview
@@ -426,3 +428,14 @@ void AppBoxRenderView::unsetBufferCallback(Evas_Object* webview)
     LogD("enter");
     evas_object_hide(webview);
 }
+
+void AppBoxRenderView::decideNavigationCallback(Evas_Object* webview, std::string& uri)
+{
+    LogD("enter");
+
+    // navigation of box scheme should be ignored
+    if(BoxSchemeHandler::Instance()->isBoxScheme(uri)) {
+        LogD("box scheme");
+        BoxSchemeHandler::Instance()->process(m_instanceId, uri);
+    }
+}
index c5dcd40..ad6aa05 100644 (file)
@@ -85,6 +85,7 @@ class AppBoxRenderView: public IRenderView {
         void createWindowAfterCallback(Evas_Object* parent, Evas_Object* child);
         void setBufferCallback(Evas_Object* webview);
         void unsetBufferCallback(Evas_Object* webview);
+        void decideNavigationCallback(Evas_Object* webview, std::string& uri);
 
         // constructor
         explicit AppBoxRenderView(