There is one case where Document::url() and FrameLoader::url() are not the same. During the initialization of a new document, the Document's url has not yet been set and we use FrameLoader's url in Document::initSecurityContext(). By providing a KURL in Document's constructor, we can remove this unnecessary difference and obsolete FrameLoader::url().
Created attachment 59673 [details] Patch
Comment on attachment 59673 [details] Patch Nice.
http://trac.webkit.org/changeset/61783 might have broken Qt Linux Release
Created attachment 59709 [details] patch2 There are just two differences from the first patch: 1. Call setURL in Document::Document() if either a non-null Frame or a non-empty KURL was passed in. This ensures we handle XMLHttpRequests without a Frame correctly, as well as Documents with a Frame that should be defaulted to "about:blank" instead of "". 2. Pass a non-empty KURL to Document::create() in XMLHttpRequest.cpp and remove the following Document::setURL() call.
Comment on attachment 59709 [details] patch2 Ok. This makes more sense than the earlier diff. Thanks.
Presumably we have a test for the URL of an XMLHttpRequest document? I'm not sure how you could get an empty URL in there given that it would be completed w.r.t. a base URL.
Comment on attachment 59673 [details] Patch Cleared Adam Barth's review+ from obsolete attachment 59673 [details] so that this bug does not appear in http://webkit.org/pending-commit.
http://trac.webkit.org/changeset/61868