<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[176513] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/176513">176513</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2014-11-24 03:18:55 -0800 (Mon, 24 Nov 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK] WebKitWebView is created with the wrong web context when using webkit_web_view_new_with_related_view()
https://bugs.webkit.org/show_bug.cgi?id=139023

Reviewed by Sergio Villar Senin.

Source/WebKit2:

The WebKitWebContext is a construct only property, so it's always
set to the default value when not provided, during the
construction. When a related-view is used to create a new web view
we should ensure that the same web context is used for the new web
view, instead of the default. We should also ignore any web
context given as construct parameter if a related view is alos provided.

* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed): Do not set the context to the default
one when not given during construction.
(webkitWebViewSetProperty): Only use the default web context when
not provided as construct parameter and there isn't a related view.

Tools:

Rename WebKitWebView/default-context as WebKitWebView/web-context
and check we are always using the right context for new web views.

* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
(testWebViewWebContext):
(beforeAll):
(testWebViewDefaultContext): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp">trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKit2GtkTestWebKitWebViewcpp">trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (176512 => 176513)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-11-24 07:24:01 UTC (rev 176512)
+++ trunk/Source/WebKit2/ChangeLog        2014-11-24 11:18:55 UTC (rev 176513)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-11-24  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        [GTK] WebKitWebView is created with the wrong web context when using webkit_web_view_new_with_related_view()
+        https://bugs.webkit.org/show_bug.cgi?id=139023
+
+        Reviewed by Sergio Villar Senin.
+
+        The WebKitWebContext is a construct only property, so it's always
+        set to the default value when not provided, during the
+        construction. When a related-view is used to create a new web view
+        we should ensure that the same web context is used for the new web
+        view, instead of the default. We should also ignore any web
+        context given as construct parameter if a related view is alos provided.
+
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkitWebViewConstructed): Do not set the context to the default
+        one when not given during construction.
+        (webkitWebViewSetProperty): Only use the default web context when
+        not provided as construct parameter and there isn't a related view.
+
</ins><span class="cx"> 2014-11-23  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Add API to override the default local storage directory
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkWebKitWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (176512 => 176513)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2014-11-24 07:24:01 UTC (rev 176512)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp        2014-11-24 11:18:55 UTC (rev 176513)
</span><span class="lines">@@ -564,13 +564,17 @@
</span><span class="cx"> 
</span><span class="cx"> static void webkitWebViewConstructed(GObject* object)
</span><span class="cx"> {
</span><del>-    if (G_OBJECT_CLASS(webkit_web_view_parent_class)-&gt;constructed)
-        G_OBJECT_CLASS(webkit_web_view_parent_class)-&gt;constructed(object);
</del><ins>+    G_OBJECT_CLASS(webkit_web_view_parent_class)-&gt;constructed(object);
</ins><span class="cx"> 
</span><span class="cx">     WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
</span><span class="cx">     WebKitWebViewPrivate* priv = webView-&gt;priv;
</span><ins>+    if (priv-&gt;relatedView)
+        priv-&gt;context = webkit_web_view_get_context(priv-&gt;relatedView);
+    else if (!priv-&gt;context)
+        priv-&gt;context = webkit_web_context_get_default();
</ins><span class="cx">     if (!priv-&gt;settings)
</span><span class="cx">         priv-&gt;settings = adoptGRef(webkit_settings_new());
</span><ins>+
</ins><span class="cx">     webkitWebContextCreatePageForWebView(priv-&gt;context, webView, priv-&gt;userContentManager.get(), priv-&gt;relatedView);
</span><span class="cx"> 
</span><span class="cx">     priv-&gt;loadObserver = std::make_unique&lt;PageLoadStateObserver&gt;(webView);
</span><span class="lines">@@ -603,7 +607,7 @@
</span><span class="cx">     switch (propId) {
</span><span class="cx">     case PROP_WEB_CONTEXT: {
</span><span class="cx">         gpointer webContext = g_value_get_object(value);
</span><del>-        webView-&gt;priv-&gt;context = webContext ? WEBKIT_WEB_CONTEXT(webContext) : webkit_web_context_get_default();
</del><ins>+        webView-&gt;priv-&gt;context = webContext ? WEBKIT_WEB_CONTEXT(webContext) : nullptr;
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx">     case PROP_RELATED_VIEW: {
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (176512 => 176513)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-11-24 07:24:01 UTC (rev 176512)
+++ trunk/Tools/ChangeLog        2014-11-24 11:18:55 UTC (rev 176513)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-11-24  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        [GTK] WebKitWebView is created with the wrong web context when using webkit_web_view_new_with_related_view()
+        https://bugs.webkit.org/show_bug.cgi?id=139023
+
+        Reviewed by Sergio Villar Senin.
+
+        Rename WebKitWebView/default-context as WebKitWebView/web-context
+        and check we are always using the right context for new web views.
+
+        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
+        (testWebViewWebContext):
+        (beforeAll):
+        (testWebViewDefaultContext): Deleted.
+
</ins><span class="cx"> 2014-11-23  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Add API to override the default local storage directory
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWebKit2GtkTestWebKitWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp (176512 => 176513)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp        2014-11-24 07:24:01 UTC (rev 176512)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp        2014-11-24 11:18:55 UTC (rev 176513)
</span><span class="lines">@@ -24,13 +24,23 @@
</span><span class="cx"> #include &lt;glib/gstdio.h&gt;
</span><span class="cx"> #include &lt;wtf/gobject/GRefPtr.h&gt;
</span><span class="cx"> 
</span><del>-static void testWebViewDefaultContext(WebViewTest* test, gconstpointer)
</del><ins>+static void testWebViewWebContext(WebViewTest* test, gconstpointer)
</ins><span class="cx"> {
</span><span class="cx">     g_assert(webkit_web_view_get_context(test-&gt;m_webView) == test-&gt;m_webContext.get());
</span><ins>+    g_assert(webkit_web_context_get_default() != test-&gt;m_webContext.get());
</ins><span class="cx"> 
</span><span class="cx">     // Check that a web view created with g_object_new has the default context.
</span><del>-    GRefPtr&lt;WebKitWebView&gt; webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, NULL));
</del><ins>+    GRefPtr&lt;WebKitWebView&gt; webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, nullptr));
</ins><span class="cx">     g_assert(webkit_web_view_get_context(webView.get()) == webkit_web_context_get_default());
</span><ins>+
+    // Check that a web view created with a related view has the related view context.
+    webView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_related_view(test-&gt;m_webView));
+    g_assert(webkit_web_view_get_context(webView.get()) == test-&gt;m_webContext.get());
+
+    // Check that a web context given as construct parameter is ignored if a related view is also provided.
+    webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
+        &quot;web-context&quot;, webkit_web_context_get_default(), &quot;related-view&quot;, test-&gt;m_webView, nullptr));
+    g_assert(webkit_web_view_get_context(webView.get()) == test-&gt;m_webContext.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void testWebViewCustomCharset(WebViewTest* test, gconstpointer)
</span><span class="lines">@@ -573,7 +583,7 @@
</span><span class="cx"> 
</span><span class="cx"> void beforeAll()
</span><span class="cx"> {
</span><del>-    WebViewTest::add(&quot;WebKitWebView&quot;, &quot;default-context&quot;, testWebViewDefaultContext);
</del><ins>+    WebViewTest::add(&quot;WebKitWebView&quot;, &quot;web-context&quot;, testWebViewWebContext);
</ins><span class="cx">     WebViewTest::add(&quot;WebKitWebView&quot;, &quot;custom-charset&quot;, testWebViewCustomCharset);
</span><span class="cx">     WebViewTest::add(&quot;WebKitWebView&quot;, &quot;settings&quot;, testWebViewSettings);
</span><span class="cx">     WebViewTest::add(&quot;WebKitWebView&quot;, &quot;zoom-level&quot;, testWebViewZoomLevel);
</span></span></pre>
</div>
</div>

</body>
</html>