1 From 42b9ec78f75f8b0b48487e340eaae31e0ab07305 Mon Sep 17 00:00:00 2001
2 From: Alexander Shalamov <alexander.shalamov@intel.com>
3 Date: Thu, 8 Aug 2013 17:48:37 +0300
4 Subject: [PATCH 21/33] Add loading indication API and use it in example
8 efl_webview/examples/main.cc | 19 +++++++++++++++++++
9 efl_webview/lib/web_contents_delegate_xwalk.cc | 8 +++++---
10 efl_webview/lib/web_contents_delegate_xwalk.h | 3 +--
11 efl_webview/lib/webview.cc | 2 +-
12 efl_webview/lib/webview_callbacks.h | 4 ++--
13 efl_webview/public/xwalk_view.h | 2 +-
14 6 files changed, 29 insertions(+), 9 deletions(-)
16 diff --git a/efl_webview/examples/main.cc b/efl_webview/examples/main.cc
17 index 7ea8738..c0cbf4b 100644
18 --- a/efl_webview/examples/main.cc
19 +++ b/efl_webview/examples/main.cc
20 @@ -67,6 +67,14 @@ on_url_changed(void *user_data, Evas_Object *xwalk_view, void *event_info)
25 +on_loadingstate_changed(void *user_data,
26 + Evas_Object *xwalk_view,
29 + elm_progressbar_pulse((Evas_Object*)user_data, *(bool*)event_info);
32 static void window_create()
34 /* Create elementary window */
35 @@ -123,6 +131,15 @@ static void window_create()
36 elm_box_pack_end(horizontal_layout, url_entry);
37 evas_object_show(url_entry);
39 + Evas_Object* progress_bar = elm_progressbar_add(elm_window);
40 + elm_progressbar_span_size_set(progress_bar, 10);
41 + elm_progressbar_pulse_set(progress_bar, EINA_TRUE);
42 + elm_progressbar_unit_format_set(progress_bar, NULL);
43 + evas_object_size_hint_align_set(progress_bar, EVAS_HINT_FILL, 1);
44 + evas_object_size_hint_weight_set(progress_bar, 0.01, EVAS_HINT_EXPAND);
45 + elm_box_pack_end(horizontal_layout, progress_bar);
46 + evas_object_show(progress_bar);
49 Evas_Object* web_view = xwalk_view_add(evas_object_evas_get(elm_window));
50 evas_object_size_hint_weight_set(web_view, EVAS_HINT_EXPAND,
51 @@ -147,6 +164,8 @@ static void window_create()
52 on_title_changed, elm_window);
53 evas_object_smart_callback_add(web_view, "url,changed",
54 on_url_changed, url_entry);
55 + evas_object_smart_callback_add(web_view, "loadingstate,changed",
56 + on_loadingstate_changed, progress_bar);
58 evas_object_resize(elm_window, window_width, window_height);
59 evas_object_show(elm_window);
60 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.cc b/efl_webview/lib/web_contents_delegate_xwalk.cc
61 index 8700b32..d173fbc 100644
62 --- a/efl_webview/lib/web_contents_delegate_xwalk.cc
63 +++ b/efl_webview/lib/web_contents_delegate_xwalk.cc
64 @@ -26,9 +26,11 @@ WebContentsDelegateXWalk::WebContentsDelegateXWalk(
65 web_contents_->SetDelegate(this);
68 -void WebContentsDelegateXWalk::LoadProgressChanged(content::WebContents* source,
70 - web_view_->SmartCallback<webviewcallbacks::LoadProgress>().Call(&progress);
71 +void WebContentsDelegateXWalk::LoadingStateChanged
72 + (content::WebContents* source) {
73 + bool is_loading = source->IsLoading();
74 + web_view_->SmartCallback<webviewcallbacks::LoadingStateChanged>().Call(
78 bool WebContentsDelegateXWalk::TakeFocus(
79 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.h b/efl_webview/lib/web_contents_delegate_xwalk.h
80 index fae5e68..5fd1409 100644
81 --- a/efl_webview/lib/web_contents_delegate_xwalk.h
82 +++ b/efl_webview/lib/web_contents_delegate_xwalk.h
83 @@ -22,8 +22,7 @@ class WebContentsDelegateXWalk : public content::WebContentsDelegate {
85 WebContentsDelegateXWalk(content::BrowserContext*, WebView*);
87 - virtual void LoadProgressChanged(content::WebContents* source,
88 - double progress) OVERRIDE;
89 + virtual void LoadingStateChanged(content::WebContents* source) OVERRIDE;
91 virtual bool TakeFocus(content::WebContents* source,
92 bool reverse) OVERRIDE;
93 diff --git a/efl_webview/lib/webview.cc b/efl_webview/lib/webview.cc
94 index a60ac13..2eccd1e 100644
95 --- a/efl_webview/lib/webview.cc
96 +++ b/efl_webview/lib/webview.cc
97 @@ -22,7 +22,7 @@ namespace callbacks = xwalk::webviewcallbacks;
98 const char evas_smart_xwalk_view_type[] = "Evas_Smart_Xwalk_View";
100 const Evas_Smart_Cb_Description g_smart_callbacks[] = {
101 - {callbacks::CallbackName<callbacks::LoadProgress>(), "d"},
102 + {callbacks::CallbackName<callbacks::LoadingStateChanged>(), "d"},
103 {callbacks::CallbackName<callbacks::TitleChange>(), "s"},
106 diff --git a/efl_webview/lib/webview_callbacks.h b/efl_webview/lib/webview_callbacks.h
107 index 241b1d6..38df9eb 100644
108 --- a/efl_webview/lib/webview_callbacks.h
109 +++ b/efl_webview/lib/webview_callbacks.h
110 @@ -12,7 +12,7 @@ namespace xwalk {
111 namespace webviewcallbacks {
115 + LoadingStateChanged,
119 @@ -70,7 +70,7 @@ struct CallBackInfo<callbackType> { \
122 // Note: type 'void' means that no arguments are expected.
123 -DECLARE_XWALK_VIEW_CALLBACK(LoadProgress, "load,progress", double*);
124 +DECLARE_XWALK_VIEW_CALLBACK(LoadingStateChanged, "loadingstate,changed", bool*);
125 DECLARE_XWALK_VIEW_CALLBACK(TitleChange, "title,changed", const char*);
126 DECLARE_XWALK_VIEW_CALLBACK(URLChanged, "url,changed", const char*);
127 } // namespace webviewcallbacks
128 diff --git a/efl_webview/public/xwalk_view.h b/efl_webview/public/xwalk_view.h
129 index 680a5ab..e6f70a5 100644
130 --- a/efl_webview/public/xwalk_view.h
131 +++ b/efl_webview/public/xwalk_view.h
133 * The following signals (see evas_object_smart_callback_add()) are emitted:
135 * - "title,changed", const char*: title of the main frame was changed.
136 - * - "load,progress", double*: load progress has changed (value from 0.0 to 1.0).
137 + * - "loadingstate,changed", Eina_Bool*: loading state has changed, @c EINA_TRUE if main frame is in loading state; @c EINA_FALSE, otherwise.
138 * - "url,changed", const char*: url of the main frame was changed.