<!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" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { 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 #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#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>
<title>[19978] trunk</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/19978">19978</a></dd>
<dt>Author</dt> <dd>andersca</dd>
<dt>Date</dt> <dd>2007-03-06 00:37:36 -0800 (Tue, 06 Mar 2007)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebCore:

        Reviewed by Adam.

        WebCore part of patch to make it possible to have different user agents for different URLs.

        * bindings/js/kjs_navigator.cpp:
        (KJS::Navigator::getValueProperty):
        * bindings/js/kjs_proxy.cpp:
        (WebCore::KJSProxy::initScriptIfNeeded):
        * loader/DocumentLoader.cpp:
        (WebCore::DocumentLoader::setLoading):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::userAgent):
        (WebCore::FrameLoader::loadResourceSynchronously):
        (WebCore::FrameLoader::applyUserAgent):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * platform/graphics/svg/SVGImageEmptyClients.h:
        (WebCore::SVGEmptyFrameLoaderClient::userAgent):

WebKit:

        Reviewed by Adam.

        Update for WebCore changes.
        
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::userAgent):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCorebindingsjskjs_navigatorcpp">trunk/WebCore/bindings/js/kjs_navigator.cpp</a></li>
<li><a href="#trunkWebCorebindingsjskjs_proxycpp">trunk/WebCore/bindings/js/kjs_proxy.cpp</a></li>
<li><a href="#trunkWebCoreloaderFrameLoadercpp">trunk/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkWebCoreloaderFrameLoaderh">trunk/WebCore/loader/FrameLoader.h</a></li>
<li><a href="#trunkWebCoreloaderFrameLoaderClienth">trunk/WebCore/loader/FrameLoaderClient.h</a></li>
<li><a href="#trunkWebCoreplatformgraphicssvgSVGImageEmptyClientsh">trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h</a></li>
<li><a href="#trunkWebKitChangeLog">trunk/WebKit/ChangeLog</a></li>
<li><a href="#trunkWebKitWebCoreSupportWebFrameLoaderClienth">trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkWebKitWebCoreSupportWebFrameLoaderClientmm">trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/ChangeLog        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2007-03-06  Anders Carlsson  &lt;acarlsson@apple.com&gt;
+
+        Reviewed by Adam.
+
+        WebCore part of patch to make it possible to have different user agents for different URLs.
+
+        * bindings/js/kjs_navigator.cpp:
+        (KJS::Navigator::getValueProperty):
+        * bindings/js/kjs_proxy.cpp:
+        (WebCore::KJSProxy::initScriptIfNeeded):
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::setLoading):
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::userAgent):
+        (WebCore::FrameLoader::loadResourceSynchronously):
+        (WebCore::FrameLoader::applyUserAgent):
+        * loader/FrameLoader.h:
+        * loader/FrameLoaderClient.h:
+        * platform/graphics/svg/SVGImageEmptyClients.h:
+        (WebCore::SVGEmptyFrameLoaderClient::userAgent):
+
</ins><span class="cx"> 2007-03-05  Kevin McCullough  &lt;kmccullough@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Mark and Dave H.
</span></span></pre></div>
<a id="trunkWebCorebindingsjskjs_navigatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/js/kjs_navigator.cpp (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/kjs_navigator.cpp        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/bindings/js/kjs_navigator.cpp        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AtomicString.h&quot;
</span><span class="cx"> #include &quot;CookieJar.h&quot;
</span><ins>+#include &quot;Document.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;Language.h&quot;
</span><span class="lines">@@ -190,7 +191,7 @@
</span><span class="cx">     return jsString(&quot;Netscape&quot;);
</span><span class="cx">   case AppVersion: {
</span><span class="cx">     // Version is everything in the user agent string past the &quot;Mozilla/&quot; prefix.
</span><del>-    const String userAgent = m_frame-&gt;loader()-&gt;userAgent();
</del><ins>+    const String userAgent = m_frame-&gt;loader()-&gt;userAgent(m_frame-&gt;document() ? m_frame-&gt;document()-&gt;URL() : KURL());
</ins><span class="cx">     return jsString(userAgent.substring(userAgent.find('/') + 1));
</span><span class="cx">   }
</span><span class="cx">   case Product:
</span><span class="lines">@@ -204,7 +205,7 @@
</span><span class="cx">   case Language:
</span><span class="cx">     return jsString(defaultLanguage());
</span><span class="cx">   case UserAgent:
</span><del>-    return jsString(m_frame-&gt;loader()-&gt;userAgent());
</del><ins>+    return jsString(m_frame-&gt;loader()-&gt;userAgent(m_frame-&gt;document() ? m_frame-&gt;document()-&gt;URL() : KURL()));
</ins><span class="cx">   case Platform:
</span><span class="cx">     return jsString(WEBCORE_NAVIGATOR_PLATFORM);
</span><span class="cx">   case _Plugins:
</span></span></pre></div>
<a id="trunkWebCorebindingsjskjs_proxycpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/js/kjs_proxy.cpp (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/kjs_proxy.cpp        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/bindings/js/kjs_proxy.cpp        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -22,6 +22,7 @@
</span><span class="cx"> #include &quot;kjs_proxy.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Chrome.h&quot;
</span><ins>+#include &quot;Document.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="lines">@@ -143,7 +144,7 @@
</span><span class="cx">   // Create a KJS interpreter for this frame
</span><span class="cx">   m_script = new ScriptInterpreter(globalObject, m_frame);
</span><span class="cx"> 
</span><del>-  String userAgent = m_frame-&gt;loader()-&gt;userAgent();
</del><ins>+  String userAgent = m_frame-&gt;loader()-&gt;userAgent(m_frame-&gt;document() ? m_frame-&gt;document()-&gt;URL() : KURL());
</ins><span class="cx">   if (userAgent.find(&quot;Microsoft&quot;) &gt;= 0 || userAgent.find(&quot;MSIE&quot;) &gt;= 0)
</span><span class="cx">     m_script-&gt;setCompatMode(Interpreter::IECompat);
</span><span class="cx">   else
</span></span></pre></div>
<a id="trunkWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/FrameLoader.cpp (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/FrameLoader.cpp        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/loader/FrameLoader.cpp        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -2814,9 +2814,9 @@
</span><span class="cx">     load(copy, true, event, 0, HashMap&lt;String, String&gt;());
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-String FrameLoader::userAgent() const
</del><ins>+String FrameLoader::userAgent(const KURL&amp; url) const
</ins><span class="cx"> {
</span><del>-    return m_client-&gt;userAgent();
</del><ins>+    return m_client-&gt;userAgent(url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::createEmptyDocument()
</span><span class="lines">@@ -2994,7 +2994,7 @@
</span><span class="cx">         initialRequest.setHTTPReferrer(referrer);
</span><span class="cx">     
</span><span class="cx">     initialRequest.setMainDocumentURL(m_frame-&gt;page()-&gt;mainFrame()-&gt;loader()-&gt;documentLoader()-&gt;request().url());
</span><del>-    initialRequest.setHTTPUserAgent(client()-&gt;userAgent());
</del><ins>+    initialRequest.setHTTPUserAgent(client()-&gt;userAgent(request.url()));
</ins><span class="cx">     
</span><span class="cx">     unsigned long identifier = 0;    
</span><span class="cx">     ResourceRequest newRequest(initialRequest);
</span><span class="lines">@@ -3406,7 +3406,7 @@
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::applyUserAgent(ResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    String userAgent = client()-&gt;userAgent();
</del><ins>+    String userAgent = client()-&gt;userAgent(request.url());
</ins><span class="cx">     ASSERT(!userAgent.isNull());
</span><span class="cx">     request.setHTTPUserAgent(userAgent);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkWebCoreloaderFrameLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/FrameLoader.h (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/FrameLoader.h        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/loader/FrameLoader.h        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -324,7 +324,7 @@
</span><span class="cx">         void tokenizerProcessedData();
</span><span class="cx"> 
</span><span class="cx">         void handledOnloadEvents();
</span><del>-        String userAgent() const;
</del><ins>+        String userAgent(const KURL&amp;) const;
</ins><span class="cx"> 
</span><span class="cx">         Widget* createJavaAppletWidget(const IntSize&amp;, Element*, const HashMap&lt;String, String&gt;&amp; args);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebCoreloaderFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/FrameLoaderClient.h (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/FrameLoaderClient.h        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/loader/FrameLoaderClient.h        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx">         virtual PassRefPtr&lt;DocumentLoader&gt; createDocumentLoader(const ResourceRequest&amp;, const SubstituteData&amp;) = 0;
</span><span class="cx">         virtual void setTitle(const String&amp; title, const KURL&amp;) = 0;
</span><span class="cx"> 
</span><del>-        virtual String userAgent() = 0;
</del><ins>+        virtual String userAgent(const KURL&amp;) = 0;
</ins><span class="cx">         
</span><span class="cx">         virtual void saveDocumentViewToPageCache(PageCache*) = 0;
</span><span class="cx">         virtual bool canCachePage() const = 0;
</span></span></pre></div>
<a id="trunkWebCoreplatformgraphicssvgSVGImageEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx">     virtual PassRefPtr&lt;DocumentLoader&gt; createDocumentLoader(const ResourceRequest&amp; request, const SubstituteData&amp; substituteData) { return new DocumentLoader(request, substituteData); }
</span><span class="cx">     virtual void setTitle(const String&amp; title, const KURL&amp;) { }
</span><span class="cx">     
</span><del>-    virtual String userAgent() { return &quot;&quot;; }
</del><ins>+    virtual String userAgent(const KURL&amp;) { return &quot;&quot;; }
</ins><span class="cx">     
</span><span class="cx">     virtual void setDocumentViewFromPageCache(PageCache*) { }
</span><span class="cx">     virtual void updateGlobalHistoryForStandardLoad(const KURL&amp;) { }
</span></span></pre></div>
<a id="trunkWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/ChangeLog (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/ChangeLog        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebKit/ChangeLog        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2007-03-06  Anders Carlsson  &lt;acarlsson@apple.com&gt;
+
+        Reviewed by Adam.
+
+        Update for WebCore changes.
+        
+        * WebCoreSupport/WebFrameLoaderClient.h:
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::userAgent):
+
</ins><span class="cx"> 2007-03-05  Anders Carlsson  &lt;acarlsson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Adam, Darin.
</span></span></pre></div>
<a id="trunkWebKitWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.h (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.h        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.h        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void setDefersLoading(bool);
</span><span class="cx"> 
</span><del>-    virtual WebCore::String userAgent();
</del><ins>+    virtual WebCore::String userAgent(const WebCore::KURL&amp;);
</ins><span class="cx"> 
</span><span class="cx">     virtual bool willUseArchive(WebCore::ResourceLoader*, const WebCore::ResourceRequest&amp;, const WebCore::KURL&amp; originalURL) const;
</span><span class="cx">     virtual bool isArchiveLoadPending(WebCore::ResourceLoader*) const;
</span></span></pre></div>
<a id="trunkWebKitWebCoreSupportWebFrameLoaderClientmm"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm (19977 => 19978)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm        2007-03-06 07:04:16 UTC (rev 19977)
+++ trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm        2007-03-06 08:37:36 UTC (rev 19978)
</span><span class="lines">@@ -985,7 +985,7 @@
</span><span class="cx">     (core(m_webFrame.get())-&gt;loader()-&gt;*function)(action);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String WebFrameLoaderClient::userAgent()
</del><ins>+String WebFrameLoaderClient::userAgent(const KURL&amp;)
</ins><span class="cx"> {
</span><span class="cx">     return [getWebView(m_webFrame.get()) _userAgent];
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>