XWalk WebView patchset, README and LICENSE files.
[platform/framework/web/xwalk_webview.git] / patchset / 0019-Renaming.-Fixed-layout-while-loading-from-address-ba.patch
1 From 2717a30b8dfe9ad67c6fcceeb85d840ba4f1e081 Mon Sep 17 00:00:00 2001
2 From: Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
3 Date: Thu, 8 Aug 2013 13:00:55 +0300
4 Subject: [PATCH 19/33] Renaming. Fixed layout while loading from address bar.
5
6 ---
7  .../renderer_host/render_widget_host_view_efl.cc   |   5 +
8  .../browser/web_contents/web_contents_view_efl.cc  |   3 -
9  efl_webview/lib/web_contents_delegate_xwalk.cc     |   3 +-
10  efl_webview/lib/web_contents_delegate_xwalk.h      |   6 +-
11  .../lib/web_contents_view_delegate_xwalk.cc        |   6 +-
12  efl_webview/lib/webview.cc                         | 131 +++++++++++----------
13  efl_webview/lib/webview.h                          |  16 +--
14  efl_webview/public/xwalk_main.cc                   |   2 +-
15  efl_webview/public/xwalk_view.cc                   |   4 +-
16  9 files changed, 90 insertions(+), 86 deletions(-)
17
18 diff --git a/content/browser/renderer_host/render_widget_host_view_efl.cc b/content/browser/renderer_host/render_widget_host_view_efl.cc
19 index 67dc2dd..e9f3ec9 100644
20 --- a/content/browser/renderer_host/render_widget_host_view_efl.cc
21 +++ b/content/browser/renderer_host/render_widget_host_view_efl.cc
22 @@ -200,6 +200,7 @@ bool RenderWidgetHostViewEfl::OnMessageReceived(const IPC::Message& message) {
23  
24  void RenderWidgetHostViewEfl::InitAsChild(
25      gfx::NativeView parent_view) {
26 +  DCHECK(parent_view);
27    preserve_window_.reset(gfx::PreserveWindow::Create(
28        this, evas_object_evas_get(parent_view)));
29    evas_object_size_hint_align_set(preserve_window_->SmartObject(),
30 @@ -207,6 +208,10 @@ void RenderWidgetHostViewEfl::InitAsChild(
31    evas_object_size_hint_weight_set(preserve_window_->SmartObject(),
32                                     EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
33    evas_object_show(preserve_window_->SmartObject());
34 +
35 +  if (evas_object_box_children_get(parent_view))
36 +    evas_object_box_remove_all(parent_view, false);
37 +
38    evas_object_box_append(parent_view, preserve_window_->SmartObject());
39    compositing_surface_ = preserve_window_->EmbeddedXWindow();
40  }
41 diff --git a/content/browser/web_contents/web_contents_view_efl.cc b/content/browser/web_contents/web_contents_view_efl.cc
42 index 371231c..d44a7a9 100644
43 --- a/content/browser/web_contents/web_contents_view_efl.cc
44 +++ b/content/browser/web_contents/web_contents_view_efl.cc
45 @@ -161,9 +161,6 @@ void WebContentsViewEfl::RenderViewCreated(RenderViewHost* host) {
46  }
47  
48  void WebContentsViewEfl::RenderViewDeleted(RenderViewHost* render_view_host) {
49 -  if (GetNativeView() && GetContentNativeView()) {
50 -    evas_object_box_remove(GetNativeView(), GetContentNativeView());
51 -  }
52  }
53  
54  void WebContentsViewEfl::RenderViewSwappedIn(RenderViewHost* host) {
55 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.cc b/efl_webview/lib/web_contents_delegate_xwalk.cc
56 index 65024e6..8700b32 100644
57 --- a/efl_webview/lib/web_contents_delegate_xwalk.cc
58 +++ b/efl_webview/lib/web_contents_delegate_xwalk.cc
59 @@ -4,7 +4,6 @@
60  
61  #include "efl_webview/lib/web_contents_delegate_xwalk.h"
62  
63 -#include <Elementary.h>
64  #include "content/public/browser/web_contents.h"
65  #include "efl_webview/lib/web_contents_view_delegate_xwalk.h"
66  #include "efl_webview/lib/webview.h"
67 @@ -18,7 +17,7 @@ const int g_window_height = 600;
68  }  // namespace
69  
70  WebContentsDelegateXWalk::WebContentsDelegateXWalk(
71 -    content::BrowserContext* browser_context, WebViewPrivate* web_view)
72 +    content::BrowserContext* browser_context, WebView* web_view)
73      : web_view_(web_view) {
74    content::WebContents::CreateParams create_params(browser_context, 0);
75    create_params.initial_size = gfx::Size(g_window_width, g_window_height);
76 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.h b/efl_webview/lib/web_contents_delegate_xwalk.h
77 index 7e143cb..fae5e68 100644
78 --- a/efl_webview/lib/web_contents_delegate_xwalk.h
79 +++ b/efl_webview/lib/web_contents_delegate_xwalk.h
80 @@ -16,11 +16,11 @@ class WebContentsViewDelegate;
81  
82  namespace xwalk {
83  
84 -class WebViewPrivate;
85 +class WebView;
86  
87  class WebContentsDelegateXWalk : public content::WebContentsDelegate {
88   public:
89 -  WebContentsDelegateXWalk(content::BrowserContext*, WebViewPrivate*);
90 +  WebContentsDelegateXWalk(content::BrowserContext*, WebView*);
91  
92    virtual void LoadProgressChanged(content::WebContents* source,
93                                     double progress) OVERRIDE;
94 @@ -35,7 +35,7 @@ class WebContentsDelegateXWalk : public content::WebContentsDelegate {
95    content::WebContents* WebContents() { return web_contents_.get(); }
96  
97   private:
98 -  WebViewPrivate* web_view_;
99 +  WebView* web_view_;
100    scoped_ptr<content::WebContents> web_contents_;
101  };
102  
103 diff --git a/efl_webview/lib/web_contents_view_delegate_xwalk.cc b/efl_webview/lib/web_contents_view_delegate_xwalk.cc
104 index 0b4c686..c48534b 100644
105 --- a/efl_webview/lib/web_contents_view_delegate_xwalk.cc
106 +++ b/efl_webview/lib/web_contents_view_delegate_xwalk.cc
107 @@ -5,8 +5,6 @@
108  #include "efl_webview/lib/web_contents_view_delegate_xwalk.h"
109  #include "efl_webview/lib/webview.h"
110  
111 -#include <Elementary.h>
112 -
113  namespace xwalk {
114  
115  WebContentsViewDelegateXWalk::WebContentsViewDelegateXWalk(
116 @@ -21,11 +19,11 @@ WebContentsViewDelegateXWalk::~WebContentsViewDelegateXWalk() {
117  void WebContentsViewDelegateXWalk::Focus() {
118    if (!native_view_)
119      return;
120 -  elm_object_focus_set(native_view_, EINA_TRUE);
121 +  evas_object_focus_set(native_view_, EINA_TRUE);
122  }
123  
124  void WebContentsViewDelegateXWalk::UpdateTitle(const string16& title) {
125 -  ToWebViewPrivate(native_view_)->SmartCallback<webviewcallbacks::TitleChange>()
126 +  ToWebView(native_view_)->SmartCallback<webviewcallbacks::TitleChange>()
127                                    .Call(EinaSharedString(title));
128  }
129  
130 diff --git a/efl_webview/lib/webview.cc b/efl_webview/lib/webview.cc
131 index 3e4d467..a60ac13 100644
132 --- a/efl_webview/lib/webview.cc
133 +++ b/efl_webview/lib/webview.cc
134 @@ -28,39 +28,12 @@ const Evas_Smart_Cb_Description g_smart_callbacks[] = {
135  
136  struct XWalk_View_Smart_Data {
137    Evas_Object_Box_Data base_;
138 -  xwalk::WebViewPrivate* priv_;
139 +  xwalk::WebView* priv_;
140  };
141  
142 -bool IsXWalkViewEvasObject(const Evas_Object* evas_object) {
143 -  DCHECK(evas_object);
144 -
145 -  const char* evas_object_type = evas_object_type_get(evas_object);
146 -  if (!evas_object_smart_type_check(evas_object, evas_smart_xwalk_view_type)) {
147 -    LOG(ERROR) << evas_object << " is not of an "
148 -               << evas_object_type << "!";
149 -    return false;
150 -  }
151 -
152 -  const Evas_Smart* evas_smart = evas_object_smart_smart_get(evas_object);
153 -  if (!evas_smart) {
154 -    LOG(ERROR) << evas_object << "("
155 -               << evas_object_type << ") is not a smart object!";
156 -    return false;
157 -  }
158 -
159 -  const Evas_Smart_Class* smart_class = evas_smart_class_get(evas_smart);
160 -  if (!smart_class) {
161 -    LOG(ERROR) << evas_object << "("
162 -               << evas_object_type << ") is not a smart class object!";
163 -    return false;
164 -  }
165 -
166 -  return true;
167 -}
168 -
169  inline XWalk_View_Smart_Data* ToSmartData(const Evas_Object* evas_object) {
170    DCHECK(evas_object);
171 -  DCHECK(IsXWalkViewEvasObject(evas_object));
172 +  DCHECK(xwalk::IsWebViewEvasObject(evas_object));
173    CHECK(evas_object_smart_data_get(evas_object));
174    return static_cast<XWalk_View_Smart_Data*>(
175              evas_object_smart_data_get(evas_object));
176 @@ -107,25 +80,10 @@ void xwalk_view_smart_set_user(Evas_Object_Box_Api* smart_class) {
177  
178  namespace xwalk {
179  
180 -GURL WebViewPrivate::s_startup_url = GURL();
181 -
182 -Evas_Object* CreateWebView(Evas* canvas) {
183 -  DCHECK(canvas);
184 -
185 -  Evas_Object* view_object =
186 -      evas_object_smart_add(canvas, xwalk_view_smart_class_new());
187 -
188 -  XWalk_View_Smart_Data* smart_data = ToSmartData(view_object);
189 -  DCHECK(smart_data);
190 -
191 -  DCHECK(!smart_data->priv_);
192 -  smart_data->priv_ = new WebViewPrivate(view_object);
193 -
194 -  return view_object;
195 -}
196 +GURL WebView::s_startup_url = GURL();
197  
198  // static
199 -void WebViewPrivate::CommandLineInit(int argc, char** argv) {
200 +void WebView::CommandLineInit(int argc, char** argv) {
201    CommandLine::Init(argc, argv);
202  
203    CommandLine* command_line = CommandLine::ForCurrentProcess();
204 @@ -138,16 +96,16 @@ void WebViewPrivate::CommandLineInit(int argc, char** argv) {
205    if (!(url.is_valid() && url.has_scheme()))
206      url = net::FilePathToFileURL(base::FilePath(args[0]));
207  
208 -  WebViewPrivate::s_startup_url = GURL(url);
209 +  WebView::s_startup_url = GURL(url);
210  }
211  
212 -WebViewPrivate::WebViewPrivate(Evas_Object* view_object)
213 +WebView::WebView(Evas_Object* view_object)
214      : view_object_(view_object)
215      , context_(WebRuntimeContext::current())
216      , web_contents_delegate_(
217            new WebContentsDelegateXWalk(context_->BrowserContext(), this)) {
218 -  if (!WebViewPrivate::s_startup_url.is_valid())
219 -    WebViewPrivate::s_startup_url = GURL("about:blank");
220 +  if (!WebView::s_startup_url.is_valid())
221 +    WebView::s_startup_url = GURL("about:blank");
222  
223    DCHECK(view_object_);
224  
225 @@ -157,33 +115,33 @@ WebViewPrivate::WebViewPrivate(Evas_Object* view_object)
226    static_cast<WebContentsViewDelegateXWalk*>(content_view->delegate())->
227        SetNativeView(view_object_);
228  
229 -  LoadURL(WebViewPrivate::s_startup_url);
230 +  LoadURL(WebView::s_startup_url);
231  }
232  
233 -WebViewPrivate::~WebViewPrivate() {
234 +WebView::~WebView() {
235  }
236  
237 -bool WebViewPrivate::CanGoBack() const {
238 +bool WebView::CanGoBack() const {
239    return NavigationController().CanGoBack();
240  }
241  
242 -bool WebViewPrivate::CanGoForward() const {
243 +bool WebView::CanGoForward() const {
244    return NavigationController().CanGoForward();
245  }
246  
247 -void WebViewPrivate::GoForward() {
248 +void WebView::GoForward() {
249    NavigationController().GoForward();
250  }
251  
252 -void WebViewPrivate::GoBack() {
253 +void WebView::GoBack() {
254    NavigationController().GoBack();
255  }
256  
257 -void WebViewPrivate::Reload() {
258 +void WebView::Reload() {
259    NavigationController().Reload(false);
260  }
261  
262 -void WebViewPrivate::LoadURL(const GURL& url) {
263 +void WebView::LoadURL(const GURL& url) {
264    content::NavigationController::LoadURLParams params(url);
265    params.transition_type = content::PageTransitionFromInt(
266        content::PAGE_TRANSITION_TYPED |
267 @@ -191,7 +149,7 @@ void WebViewPrivate::LoadURL(const GURL& url) {
268    NavigationController().LoadURLWithParams(params);
269  }
270  
271 -void WebViewPrivate::informURLChanged() {
272 +void WebView::informURLChanged() {
273    const std::string& url_str = NavigationController().
274            GetActiveEntry()->GetURL().spec();
275    if (!url_str.compare(url_ ? url_ : ""))
276 @@ -202,19 +160,66 @@ void WebViewPrivate::informURLChanged() {
277    SmartCallback<webviewcallbacks::URLChanged>().Call(url_);
278  }
279  
280 -inline content::NavigationController& WebViewPrivate::NavigationController() const {
281 +inline content::NavigationController& WebView::NavigationController() const {
282    return web_contents_delegate_->WebContents()->GetController();
283  }
284  
285 -Evas_Object* WebViewPrivate::EvasObject() {
286 +Evas_Object* WebView::EvasObject() {
287    return view_object_;
288  }
289  
290 -WebViewPrivate* ToWebViewPrivate(const Evas_Object* evas_object) {
291 -  if (evas_object && IsXWalkViewEvasObject(evas_object))
292 +Evas_Object* CreateWebViewEvasObject(Evas* canvas) {
293 +  DCHECK(canvas);
294 +
295 +  Evas_Object* view_object =
296 +      evas_object_smart_add(canvas, xwalk_view_smart_class_new());
297 +
298 +  XWalk_View_Smart_Data* smart_data = ToSmartData(view_object);
299 +  DCHECK(smart_data);
300 +
301 +  DCHECK(!smart_data->priv_);
302 +  smart_data->priv_ = new WebView(view_object);
303 +
304 +  evas_object_size_hint_align_set(view_object,
305 +                                  EVAS_HINT_FILL, EVAS_HINT_FILL);
306 +  evas_object_size_hint_weight_set(view_object,
307 +                                   EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
308 +
309 +  return view_object;
310 +}
311 +
312 +WebView* ToWebView(const Evas_Object* evas_object) {
313 +  if (evas_object && IsWebViewEvasObject(evas_object))
314      return ToSmartData(evas_object)->priv_;
315  
316    return 0;
317  }
318  
319 +bool IsWebViewEvasObject(const Evas_Object* evas_object) {
320 +  DCHECK(evas_object);
321 +
322 +  const char* evas_object_type = evas_object_type_get(evas_object);
323 +  if (!evas_object_smart_type_check(evas_object, evas_smart_xwalk_view_type)) {
324 +    LOG(ERROR) << evas_object << " is not of an "
325 +               << evas_object_type << "!";
326 +    return false;
327 +  }
328 +
329 +  const Evas_Smart* evas_smart = evas_object_smart_smart_get(evas_object);
330 +  if (!evas_smart) {
331 +    LOG(ERROR) << evas_object << "("
332 +               << evas_object_type << ") is not a smart object!";
333 +    return false;
334 +  }
335 +
336 +  const Evas_Smart_Class* smart_class = evas_smart_class_get(evas_smart);
337 +  if (!smart_class) {
338 +    LOG(ERROR) << evas_object << "("
339 +               << evas_object_type << ") is not a smart class object!";
340 +    return false;
341 +  }
342 +
343 +  return true;
344 +}
345 +
346  }  // namespace xwalk
347 diff --git a/efl_webview/lib/webview.h b/efl_webview/lib/webview.h
348 index 43b6183..985ef160 100644
349 --- a/efl_webview/lib/webview.h
350 +++ b/efl_webview/lib/webview.h
351 @@ -25,11 +25,11 @@ namespace xwalk {
352  class WebContentsDelegateXWalk;
353  class WebRuntimeContext;
354  
355 -class WebViewPrivate {  // FIXME : Consider renaming.
356 +class WebView {
357   public:
358    static void CommandLineInit(int argc, char** argv);
359  
360 -  ~WebViewPrivate();
361 +  ~WebView();
362  
363    EAPI Evas_Object* EvasObject();
364  
365 @@ -50,7 +50,7 @@ class WebViewPrivate {  // FIXME : Consider renaming.
366    void informURLChanged();
367  
368   private:
369 -  explicit WebViewPrivate(Evas_Object* evas_object);
370 +  explicit WebView(Evas_Object* evas_object);
371  
372    content::NavigationController& NavigationController() const;
373  
374 @@ -61,15 +61,15 @@ class WebViewPrivate {  // FIXME : Consider renaming.
375  
376    static GURL s_startup_url;
377  
378 -  friend Evas_Object* CreateWebView(Evas* canvas);
379 +  friend Evas_Object* CreateWebViewEvasObject(Evas* canvas);
380  
381 -  DISALLOW_COPY_AND_ASSIGN(WebViewPrivate);
382 +  DISALLOW_COPY_AND_ASSIGN(WebView);
383  };
384  
385 +Evas_Object* CreateWebViewEvasObject(Evas* canvas);
386  
387 -Evas_Object* CreateWebView(Evas* canvas);
388 -
389 -WebViewPrivate* ToWebViewPrivate(const Evas_Object* web_view);
390 +WebView* ToWebView(const Evas_Object* evas_object);
391 +bool IsWebViewEvasObject(const Evas_Object* evas_object);
392  
393  }  // namespace xwalk
394  
395 diff --git a/efl_webview/public/xwalk_main.cc b/efl_webview/public/xwalk_main.cc
396 index 2dfc902..218c55d 100644
397 --- a/efl_webview/public/xwalk_main.cc
398 +++ b/efl_webview/public/xwalk_main.cc
399 @@ -6,5 +6,5 @@
400  #include "efl_webview/lib/webview.h"
401  
402  void xwalk_init(int argc, char *argv[]) {
403 -  xwalk::WebViewPrivate::CommandLineInit(argc, argv);
404 +  xwalk::WebView::CommandLineInit(argc, argv);
405  }
406 diff --git a/efl_webview/public/xwalk_view.cc b/efl_webview/public/xwalk_view.cc
407 index 0acd334..5893224 100644
408 --- a/efl_webview/public/xwalk_view.cc
409 +++ b/efl_webview/public/xwalk_view.cc
410 @@ -6,7 +6,7 @@
411  #include "efl_webview/lib/webview.h"
412  
413  #define XWALK_VIEW_GET_PRIVATE_OR_RETURN(xwalk_view, priv, ...)      \
414 -  xwalk::WebViewPrivate* priv = xwalk::ToWebViewPrivate(xwalk_view); \
415 +  xwalk::WebView* priv = xwalk::ToWebView(xwalk_view);               \
416    do {                                                               \
417      if (!priv) {                                                     \
418        EINA_LOG_CRIT("no private data for object %p", xwalk_view);    \
419 @@ -18,7 +18,7 @@
420  Evas_Object* xwalk_view_add(Evas* canvas) {
421    EINA_SAFETY_ON_NULL_RETURN_VAL(canvas, 0);
422  
423 -  return xwalk::CreateWebView(canvas);
424 +  return xwalk::CreateWebViewEvasObject(canvas);
425  }
426  
427  Eina_Bool xwalk_view_url_set(Evas_Object* evas_object, const char* url) {
428 -- 
429 1.8.1.2
430