2 * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file AppBoxRenderView.h
18 * @author Yunchan Cho (yunchan.cho@samsung.com)
20 #ifndef APP_BOX_RENDER_VIEW_H
21 #define APP_BOX_RENDER_VIEW_H
28 #include <ewk_context.h>
29 #include <i_runnable_widget_object.h>
30 #include <Core/View/IRenderView.h>
31 #include <Core/View/IPdHelper.h>
33 class AppBoxRenderBuffer;
35 class AppBoxRenderView: public IRenderView {
37 typedef std::shared_ptr<Ewk_Context> EwkContextPtr;
38 static IRenderViewPtr create(
39 std::string boxId, std::string instanceId,
40 Evas_Object* boxWin, EwkContextPtr ewkContext)
42 return IRenderViewPtr(
44 boxId, instanceId, boxWin, ewkContext));
46 virtual void showBox(RenderInfoPtr renderInfo);
47 virtual void hideBox();
48 virtual void pauseBox();
49 virtual void resumeBox();
50 virtual void showPd(Evas_Object* pdWin, RenderInfoPtr renderInfo);
51 virtual void hidePd();
52 Evas_Object* getBoxWebView();
53 Evas_Object* getPdWebView();
54 virtual ~AppBoxRenderView();
62 typedef std::shared_ptr<WRT::IRunnableWidgetObject> ViewPtr;
66 std::string getAppId(std::string& boxId);
67 std::string getStartUrl(UrlType type, std::string& defaultParams);
68 Evas_Object* getCurrentSnapShot();
70 void addRenderTimer();
71 void deleteRenderTimer();
73 // timer and idler callback
74 static Eina_Bool fireRenderTimerCallback(void* data);
75 static Eina_Bool openPdIdlerCallback(void* data);
78 static void executeScriptCallback(
79 Evas_Object* webview, const char* result, void* data);
81 // user Callbacks of RunnableWidgetObject
82 void startLoadCallback(Evas_Object* webview);
83 void finishLoadCallback(Evas_Object* webview);
84 void createWindowBeforeCallback(Evas** canvas, Evas_Object* parent);
85 void createWindowAfterCallback(Evas_Object* parent, Evas_Object* child);
86 void setBufferCallback(Evas_Object* webview);
87 void unsetBufferCallback(Evas_Object* webview);
88 void decideNavigationCallback(Evas_Object* webview, std::string& uri);
91 explicit AppBoxRenderView(
92 std::string boxId, std::string instanceId,
93 Evas_Object* boxWin, EwkContextPtr ewkContext);
98 std::string m_instanceId;
99 Evas_Object* m_boxWin;
100 Evas_Object* m_baseWebView;
101 Evas_Object* m_snapshot;
102 RenderInfoPtr m_renderInfo;
104 std::string m_startUrl;
105 Ecore_Timer* m_fireRenderTimer;
106 IPdHelperPtr m_pdHelper;
107 EwkContextPtr m_ewkContext;
108 AppBoxRenderBuffer* m_renderBuffer;
110 friend class AppBoxRenderBuffer;
113 #endif // APP_BOX_RENDER_VIEW_H