Reviewed by Adele.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Mar 2006 21:58:59 +0000 (21:58 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Mar 2006 21:58:59 +0000 (21:58 +0000)
        - clean up ResourceRequest to be closer to a proper request interface

        * page/ResourceRequest.h: folded URL into ResourceRequest, other cleanup
        (WebCore::ResourceRequest::ResourceRequest): Add new explicit constructor
        that takes a KURL.
        (WebCore::ResourceRequest::url): getter for KURL
        (WebCore::ResourceRequest::setURL): corresponding setter
        (WebCore::ResourceRequest::referrer): new getter for referrer, instead
        of storing it in m_metaData (it was the only remaining real use of it)
        (WebCore::ResourceRequest::setReferrer): corresponding setter
        * bridge/BrowserExtension.h:
        - removed unused openURLRequest and openURLNotify methods
        - folded KURL parameter into ResourceRequest
        * bridge/mac/BrowserExtensionMac.h: remove KURL args from methods that
        also take a ResourceRequest
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow): adjust for ResourceRequest
        changes.
        * bridge/mac/MacFrame.h: remove KURL args from methods that also take a
        ResourceRequest
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::openURLRequest): adjust for ResourceRequest changes
        (WebCore::MacFrame::submitForm): ditto
        (WebCore::MacFrame::urlSelected): ditto
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
        adjust for ResourceRequest changes
        * bridge/win/BrowserExtensionWin.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow): adjust for ResourceRequest changes
        (KJS::WindowFunc::callAsFunction): ditto
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL): adjust for ResourceRequest changes
        (WebCore::Frame::receivedFirstData): ditto
        (WebCore::Frame::begin): ditto
        (WebCore::Frame::completeURL): ditto
        (WebCore::Frame::changeLocation): ditto
        (WebCore::Frame::urlSelected): ditto
        (WebCore::Frame::requestFrame): ditto
        (WebCore::Frame::submitForm): ditto
        * page/Frame.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (BrowserExtensionWin::createNewWindow): ditto

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13364 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
WebCore/ChangeLog
WebCore/bridge/BrowserExtension.h
WebCore/bridge/mac/BrowserExtensionMac.h
WebCore/bridge/mac/BrowserExtensionMac.mm
WebCore/bridge/mac/MacFrame.h
WebCore/bridge/mac/MacFrame.mm
WebCore/bridge/mac/WebCoreFrameBridge.mm
WebCore/bridge/win/BrowserExtensionWin.h
WebCore/khtml/ecma/kjs_window.cpp
WebCore/page/Frame.cpp
WebCore/page/Frame.h
WebCore/page/ResourceRequest.h
WebCore/platform/win/TemporaryLinkStubs.cpp

index 845aaee033cdee9b8b2119c01e4b236378282e71..5b7366d78d1eab97be507029bf270c29f0432842 100644 (file)
@@ -1,3 +1,51 @@
+2006-03-17  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Adele.
+
+        - clean up ResourceRequest to be closer to a proper request interface
+
+        * page/ResourceRequest.h: folded URL into ResourceRequest, other cleanup
+        (WebCore::ResourceRequest::ResourceRequest): Add new explicit constructor
+        that takes a KURL.
+        (WebCore::ResourceRequest::url): getter for KURL
+        (WebCore::ResourceRequest::setURL): corresponding setter
+        (WebCore::ResourceRequest::referrer): new getter for referrer, instead
+        of storing it in m_metaData (it was the only remaining real use of it)
+        (WebCore::ResourceRequest::setReferrer): corresponding setter
+        * bridge/BrowserExtension.h: 
+        - removed unused openURLRequest and openURLNotify methods
+        - folded KURL parameter into ResourceRequest
+        * bridge/mac/BrowserExtensionMac.h: remove KURL args from methods that
+        also take a ResourceRequest
+        * bridge/mac/BrowserExtensionMac.mm:
+        (WebCore::BrowserExtensionMac::createNewWindow): adjust for ResourceRequest
+        changes.
+        * bridge/mac/MacFrame.h: remove KURL args from methods that also take a
+        ResourceRequest
+        * bridge/mac/MacFrame.mm:
+        (WebCore::MacFrame::openURLRequest): adjust for ResourceRequest changes
+        (WebCore::MacFrame::submitForm): ditto
+        (WebCore::MacFrame::urlSelected): ditto
+        * bridge/mac/WebCoreFrameBridge.mm:
+        (-[WebCoreFrameBridge openURL:reload:contentType:refresh:lastModified:pageCache:]): 
+        adjust for ResourceRequest changes
+        * bridge/win/BrowserExtensionWin.h:
+        * khtml/ecma/kjs_window.cpp:
+        (KJS::createNewWindow): adjust for ResourceRequest changes
+        (KJS::WindowFunc::callAsFunction): ditto
+        * page/Frame.cpp:
+        (WebCore::Frame::didOpenURL): adjust for ResourceRequest changes
+        (WebCore::Frame::receivedFirstData): ditto
+        (WebCore::Frame::begin): ditto
+        (WebCore::Frame::completeURL): ditto
+        (WebCore::Frame::changeLocation): ditto
+        (WebCore::Frame::urlSelected): ditto
+        (WebCore::Frame::requestFrame): ditto
+        (WebCore::Frame::submitForm): ditto
+        * page/Frame.h:
+        * platform/win/TemporaryLinkStubs.cpp:
+        (BrowserExtensionWin::createNewWindow): ditto
+
 2006-03-17  Adele Peterson  <adele@apple.com>
 
         Reviewed by Tim H.
index f74332957c4393363416fd76f7c453fee280fb97..b86c8027d894e598eb1e97fa301de39195fcd382 100644 (file)
@@ -62,19 +62,14 @@ class BrowserExtension {
 public:
     virtual ~BrowserExtension() { }
 
-    virtual void openURLRequest(const KURL&, const ResourceRequest& request = ResourceRequest()) = 0;
-    virtual void openURLNotify() = 0;
+    virtual void createNewWindow(const ResourceRequest&) = 0;
     
-    virtual void createNewWindow(const KURL &url, 
-                                 const ResourceRequest& request = ResourceRequest()) = 0;
-    
-    virtual void createNewWindow(const KURL& url, 
-                                 const ResourceRequest& request, 
-                                 const WindowArgs& winArgs, 
+    virtual void createNewWindow(const ResourceRequest&, 
+                                 const WindowArgs&, 
                                  Frame*& part) = 0;
     
-    virtual void setIconURL(const KURL &url) = 0;
-    virtual void setTypedIconURL(const KURL &url, const QString &type) = 0;
+    virtual void setIconURL(const KURL&) = 0;
+    virtual void setTypedIconURL(const KURL&, const QString& type) = 0;
     
     virtual int getHistoryLength() = 0;
     virtual void goBackOrForward(int distance) = 0;
index 829a7a4e886ff361dd2b047de6668b446a86f83e..cbf5977edbc061f65e35f117f3377fc8793c3d79 100644 (file)
@@ -34,19 +34,13 @@ class BrowserExtensionMac : public BrowserExtension {
 public:
     BrowserExtensionMac(Frame *);
  
-    virtual void openURLRequest(const KURL&, 
-                                const ResourceRequest& request = ResourceRequest());
-    virtual void openURLNotify();
-     
-    virtual void createNewWindow(const KURL& url, 
-                                 const ResourceRequest& request = ResourceRequest());
-    virtual void createNewWindow(const KURL& url,
-                                 const ResourceRequest& request, 
-                                 const WindowArgs& winArgs, 
+    virtual void createNewWindow(const ResourceRequest&);
+    virtual void createNewWindow(const ResourceRequest&, 
+                                 const WindowArgs&, 
                                  Frame*& part);
 
-    virtual void setIconURL(const KURL& request);
-    virtual void setTypedIconURL(const KURL& url, const QString& type);
+    virtual void setIconURL(const KURL&);
+    virtual void setTypedIconURL(const KURL&, const QString& type);
 
     virtual int getHistoryLength();
     virtual void goBackOrForward(int distance);
@@ -56,9 +50,8 @@ public:
     virtual void runModal();
     
 private:
-     void createNewWindow(const KURL& url, 
-                          const ResourceRequest& request, 
-                          const WindowArgs& winArgs, 
+     void createNewWindow(const ResourceRequest&, 
+                          const WindowArgs&, 
                           Frame** part);
 
      MacFrame *m_frame;
index 18f44e50df5bebe2beb4a80bc44a8680b7d2673c..ab16718b9f6983dd4c42c31e841a8cd02af8e2d2 100644 (file)
@@ -40,35 +40,19 @@ BrowserExtensionMac::BrowserExtensionMac(Frame *frame)
 {
 }
 
-void BrowserExtensionMac::openURLRequest(const KURL& url, const ResourceRequest& request)
-{
-    if (url.protocol().lower() == "javascript") {
-       m_frame->createEmptyDocument();
-       m_frame->replaceContentsWithScriptResult(url);
-     } else {
-       m_frame->openURLRequest(url, request);
-    }
-}
-
-void BrowserExtensionMac::openURLNotify()
+void BrowserExtensionMac::createNewWindow(const ResourceRequest& request) 
 {
+    createNewWindow(request, WindowArgs(), NULL);
 }
 
-void BrowserExtensionMac::createNewWindow(const KURL& url, const ResourceRequest& request) 
-{
-    createNewWindow(url, request, WindowArgs(), NULL);
-}
-
-void BrowserExtensionMac::createNewWindow(const KURL& url, 
-                                          const ResourceRequest& request, 
+void BrowserExtensionMac::createNewWindow(const ResourceRequest& request, 
                                           const WindowArgs& winArgs, 
                                           Frame*& part)
 {
-    createNewWindow(url, request, winArgs, &part);
+    createNewWindow(request, winArgs, &part);
 }
 
-void BrowserExtensionMac::createNewWindow(const KURL& url, 
-                                          const ResourceRequest& request, 
+void BrowserExtensionMac::createNewWindow(const ResourceRequest& request, 
                                           const WindowArgs& winArgs, 
                                           Frame** partResult)
 { 
@@ -78,13 +62,15 @@ void BrowserExtensionMac::createNewWindow(const KURL& url,
 
     if (partResult)
        *partResult = NULL;
+    
+    const KURL& url = request.url();
 
     NSString *frameName = request.frameName.length() == 0 ? nil : request.frameName.getNSString();
     if (frameName) {
         // FIXME: Can't we just use m_frame->findFrame?
         if (WebCoreFrameBridge *bridge = [m_frame->bridge() findFrameNamed:frameName]) {
             if (!url.isEmpty()) {
-                DOMString argsReferrer = request.metaData().get("referrer");
+                DOMString argsReferrer = request.referrer();
                 NSString *referrer;
                 if (!argsReferrer.isEmpty())
                     referrer = argsReferrer;
index 7b375ef1a7e76dbd565ed706e46b37bd8341d4b8..df631f8a86940bb9b707cd0028cd8d75bc0e52f8 100644 (file)
@@ -129,15 +129,15 @@ public:
 
     virtual bool openURL(const KURL &);
     
-    virtual void openURLRequest(const KURL&, const ResourceRequest&);
-    virtual void submitForm(const KURL&, const ResourceRequest&);
+    virtual void openURLRequest(const ResourceRequest&);
+    virtual void submitForm(const ResourceRequest&);
 
     QString advanceToNextMisspelling(bool startBeforeSelection = false);
     
     virtual void setTitle(const DOMString &);
     virtual void setStatusBarText(const String&);
 
-    virtual void urlSelected(const KURL&, const ResourceRequest&);
+    virtual void urlSelected(const ResourceRequest&);
 
     virtual ObjectContentType objectContentType(const KURL& url, const QString& mimeType);
     virtual Plugin* createPlugin(const KURL& url, const QStringList& paramNames, const QStringList& paramValues, const QString& mimeType);
index 70cc576b169ce40db116cd80fd4094011ed689c0..e37126b8132d97b2a00c2896c50fba48f54259bd 100644 (file)
@@ -170,18 +170,18 @@ bool MacFrame::openURL(const KURL &url)
     return true;
 }
 
-void MacFrame::openURLRequest(const KURL &url, const ResourceRequest& request)
+void MacFrame::openURLRequest(const ResourceRequest& request)
 {
     KWQ_BLOCK_EXCEPTIONS;
 
     NSString *referrer;
-    DOMString argsReferrer = request.metaData().get("referrer");
+    DOMString argsReferrer = request.referrer();
     if (!argsReferrer.isEmpty())
         referrer = argsReferrer;
     else
         referrer = [_bridge referrer];
 
-    [_bridge loadURL:url.getNSURL()
+    [_bridge loadURL:request.url().getNSURL()
             referrer:referrer
               reload:request.reload
          userGesture:userGestureHint()
@@ -468,7 +468,7 @@ void MacFrame::recordFormValue(const QString &name, const QString &value, HTMLFo
     [_formValuesAboutToBeSubmitted setObject:value.getNSString() forKey:name.getNSString()];
 }
 
-void MacFrame::submitForm(const KURL& url, const ResourceRequest& request)
+void MacFrame::submitForm(const ResourceRequest& request)
 {
     KWQ_BLOCK_EXCEPTIONS;
 
@@ -492,14 +492,14 @@ void MacFrame::submitForm(const KURL& url, const ResourceRequest& request)
         }
     }
     if (willReplaceThisFrame) {
-        if (_submittedFormURL == url) {
+        if (_submittedFormURL == request.url()) {
             return;
         }
-        _submittedFormURL = url;
+        _submittedFormURL = request.url();
     }
 
     if (!request.doPost()) {
-        [_bridge loadURL:url.getNSURL()
+        [_bridge loadURL:request.url().getNSURL()
                 referrer:[_bridge referrer] 
                   reload:request.reload
              userGesture:true
@@ -509,7 +509,7 @@ void MacFrame::submitForm(const KURL& url, const ResourceRequest& request)
               formValues:_formValuesAboutToBeSubmitted];
     } else {
         ASSERT(request.contentType().startsWith("Content-Type: "));
-        [_bridge postWithURL:url.getNSURL()
+        [_bridge postWithURL:request.url().getNSURL()
                     referrer:[_bridge referrer] 
                       target:request.frameName.getNSString()
                         data:arrayFromFormData(request.postData)
@@ -532,18 +532,18 @@ void MacFrame::frameDetached()
     KWQ_UNBLOCK_EXCEPTIONS;
 }
 
-void MacFrame::urlSelected(const KURL& url, const ResourceRequest& request)
+void MacFrame::urlSelected(const ResourceRequest& request)
 {
     KWQ_BLOCK_EXCEPTIONS;
 
     NSString* referrer;
-    DOMString argsReferrer = request.metaData().get("referrer");
+    DOMString argsReferrer = request.referrer();
     if (!argsReferrer.isEmpty())
         referrer = argsReferrer;
     else
         referrer = [_bridge referrer];
 
-    [_bridge loadURL:url.getNSURL()
+    [_bridge loadURL:request.url().getNSURL()
             referrer:referrer
               reload:request.reload
          userGesture:true
index 14bfb1166d451bcd4466ebe1b1152534bad091a1..26ec20ef910cbd29d266cefe5cefd1c2d6f0f353 100644 (file)
@@ -531,7 +531,7 @@ static inline WebCoreFrameBridge *bridge(Frame *frame)
     ResourceRequest request(m_frame->resourceRequest());
     request.reload = reload;
     if (contentType)
-        request.serviceType = QString::fromNSString(contentType);
+        request.m_responseMIMEType = QString::fromNSString(contentType);
     m_frame->setResourceRequest(request);
 
     // opening the URL
index 3757b27c39a419e36852789cc3e76bbda6ac8d30..2caa1ef9668321908f548772473bb507ebf64266 100644 (file)
@@ -34,15 +34,9 @@ class BrowserExtensionWin : public BrowserExtension {
 public:
     BrowserExtensionWin(Frame*);
  
-    virtual void openURLRequest(const KURL &, 
-                                const ResourceRequest &args = ResourceRequest());
-    virtual void openURLNotify();
-     
-    virtual void createNewWindow(const KURL &url, 
-                                 const ResourceRequest &ResourceRequest = ResourceRequest());
-    virtual void createNewWindow(const KURL& url,
-                                 const ResourceRequest& ResourceRequest, 
-                                 const WindowArgs& winArgs, 
+    virtual void createNewWindow(const ResourceRequest&);
+    virtual void createNewWindow(const ResourceRequest&,
+                                 const WindowArgs&, 
                                  Frame*& part);
 
     virtual void setIconURL(const KURL &url);
index 6fce51519b50543f95ceeb9d4efb640badcba337..5268ba0ab46bdd138e57ccaa0bd254825eb25d21 100644 (file)
@@ -536,12 +536,12 @@ static Frame *createNewWindow(ExecState *exec, Window *openerWindow, const QStri
     Frame* openerPart = openerWindow->frame();
     Frame* activePart = Window::retrieveActive(exec)->frame();
 
-    ResourceRequest request;
-
+    ResourceRequest request(KURL(""));
     request.frameName = frameName;
     if (activePart)
-        request.metaData().set("referrer", activePart->referrer());
-    request.serviceType = "text/html";
+        request.setReferrer(activePart->referrer());
+    // FIXME: is this needed?
+    request.m_responseMIMEType = "text/html";
 
     // FIXME: It's much better for client API if a new window starts with a URL, here where we
     // know what URL we are going to open. Unfortunately, this code passes the empty string
@@ -551,7 +551,7 @@ static Frame *createNewWindow(ExecState *exec, Window *openerWindow, const QStri
     // We'd have to resolve all those issues to pass the URL instead of "".
 
     Frame* newFrame = 0;
-    openerPart->browserExtension()->createNewWindow("", request, windowArgs, newFrame);
+    openerPart->browserExtension()->createNewWindow(request, windowArgs, newFrame);
 
     if (!newFrame)
         return 0;
@@ -1598,12 +1598,13 @@ JSValue *WindowFunc::callAsFunction(ExecState *exec, JSObject *thisObj, const Li
           }
           return Window::retrieve(frame);
       }
-      request.serviceType = "text/html";
+      // FIXME: is this needed?
+      request.m_responseMIMEType = "text/html";
       
       // request window (new or existing if framename is set)
       Frame* newFrame = 0;
-      request.metaData().set("referrer", activePart->referrer());
-      frame->browserExtension()->createNewWindow("", request, windowArgs, newFrame);
+      request.setReferrer(activePart->referrer());
+      frame->browserExtension()->createNewWindow(request, windowArgs, newFrame);
       if (!newFrame)
           return jsUndefined();
       newFrame->setOpener(frame);
index 5d535c18e009d7fc125f46aa5e64b93b64e5a90d..742e165ada0afbf1cf2ff9d4ad942559da4eab47 100644 (file)
@@ -245,8 +245,6 @@ bool Frame::didOpenURL(const KURL &url)
   } else
       d->m_job = new TransferJob(this, "GET", url);
 
-  d->m_job->addMetaData(d->m_request.metaData());
-
   d->m_bComplete = false;
   d->m_bLoadingMainResource = true;
   d->m_bLoadEventEmitted = false;
@@ -512,7 +510,7 @@ void Frame::setDocument(DocumentImpl* newDoc)
 
 void Frame::receivedFirstData()
 {
-    begin(d->m_workingURL, d->m_request.xOffset, d->m_request.yOffset);
+    begin(d->m_workingURL);
 
     d->m_doc->docLoader()->setCachePolicy(d->m_cachePolicy);
     d->m_workingURL = KURL();
@@ -601,7 +599,7 @@ const ResourceRequest& Frame::resourceRequest() const
     return d->m_request;
 }
 
-void Frame::begin(const KURL &url, int xOffset, int yOffset)
+void Frame::begin(const KURL &url)
 {
   if (d->m_workingURL.isEmpty())
     createEmptyDocument(); // Creates an empty document if we don't have one already
@@ -614,9 +612,6 @@ void Frame::begin(const KURL &url, int xOffset, int yOffset)
   d->m_bLoadEventEmitted = false;
   d->m_bLoadingMainResource = true;
 
-  d->m_request.xOffset = xOffset;
-  d->m_request.yOffset = yOffset;
-
   KURL ref(url);
   ref.setUser(QSTRING_NULL);
   ref.setPass(QSTRING_NULL);
@@ -629,7 +624,7 @@ void Frame::begin(const KURL &url, int xOffset, int yOffset)
   if (!d->m_url.isEmpty())
     baseurl = d->m_url;
 
-  if (DOMImplementationImpl::isXMLMIMEType(d->m_request.serviceType))
+  if (DOMImplementationImpl::isXMLMIMEType(d->m_request.m_responseMIMEType))
     d->m_doc = DOMImplementationImpl::instance()->createDocument(d->m_view.get());
   else
     d->m_doc = DOMImplementationImpl::instance()->createHTMLDocument(d->m_view.get());
@@ -881,7 +876,7 @@ QString Frame::baseTarget() const
     return d->m_doc->baseTarget();
 }
 
-KURL Frame::completeURL( const QString &url )
+KURL Frame::completeURL(const QString &url)
 {
     if (!d->m_doc)
         return url;
@@ -987,13 +982,12 @@ void Frame::changeLocation(const QString &URL, const QString &referrer, bool loc
         return;
     }
 
-    ResourceRequest request;
-
+    ResourceRequest request(completeURL(URL));
     request.setLockHistory(lockHistory);
     if (!referrer.isEmpty())
-        request.metaData().set("referrer", referrer);
+        request.setReferrer(referrer);
 
-    urlSelected(URL, "_self", request);
+    urlSelected(request, "_self");
 }
 
 void Frame::redirectionTimerFired(Timer<Frame>*)
@@ -1324,34 +1318,38 @@ void Frame::paintDragCaret(GraphicsContext* p, const IntRect &rect) const
     d->m_dragCaret.paintCaret(p, rect);
 }
 
-void Frame::urlSelected(const QString& url, const QString& _target, const ResourceRequest& request)
+void Frame::urlSelected(const QString& url, const QString& target)
+{
+    urlSelected(ResourceRequest(completeURL(url)), target);
+}
+
+void Frame::urlSelected(const ResourceRequest& request, const QString& _target)
 {
   QString target = _target;
   if (target.isEmpty() && d->m_doc)
     target = d->m_doc->baseTarget();
 
-  if (url.startsWith("javascript:", false)) {
-    executeScript(0, KURL::decode_string(url.mid(11)), true);
+  const KURL& url = request.url();
+
+  if (url.url().startsWith("javascript:", false)) {
+    executeScript(0, KURL::decode_string(url.url().mid(11)), true);
     return;
   }
 
-  KURL cURL = completeURL(url);
-  if (!cURL.isValid())
+  if (!url.isValid())
     // ### ERROR HANDLING
     return;
 
-  ResourceRequest argsCopy = request;
-  argsCopy.frameName = target;
+  ResourceRequest requestCopy = request;
+  requestCopy.frameName = target;
 
-  if (d->m_bHTTPRefresh) {
+  if (d->m_bHTTPRefresh)
     d->m_bHTTPRefresh = false;
-    argsCopy.metaData().set("cache", "refresh");
-  }
 
   if (!d->m_referrer.isEmpty())
-    argsCopy.metaData().set("referrer", d->m_referrer);
+    requestCopy.setReferrer(d->m_referrer);
 
-  urlSelected(cURL, argsCopy);
+  urlSelected(requestCopy);
 }
 
 bool Frame::requestFrame(RenderPart* renderer, const QString& _url, const QString& frameName)
@@ -1367,10 +1365,10 @@ bool Frame::requestFrame(RenderPart* renderer, const QString& _url, const QStrin
 
     Frame* frame = tree()->child(frameName);
     if (frame) {
-        ResourceRequest request;
-        request.metaData().set("referrer", d->m_referrer);
+        ResourceRequest request(url);
+        request.setReferrer(d->m_referrer);
         request.reload = (d->m_cachePolicy == KIO::CC_Reload) || (d->m_cachePolicy == KIO::CC_Refresh);
-        frame->openURLRequest(url, request);
+        frame->openURLRequest(request);
     } else
         frame = loadSubframe(renderer, url, frameName, d->m_referrer);
     
@@ -1477,7 +1475,7 @@ void Frame::submitFormAgain()
     delete form;
 }
 
-void Frame::submitForm( const char *action, const QString &url, const FormData &formData, const QString &_target, const QString& contentType, const QString& boundary )
+void Frame::submitForm(const char *action, const QString &url, const FormData &formData, const QString &_target, const QString& contentType, const QString& boundary)
 {
   KURL u = completeURL( url );
 
@@ -1497,7 +1495,7 @@ void Frame::submitForm( const char *action, const QString &url, const FormData &
   ResourceRequest request;
 
   if (!d->m_referrer.isEmpty())
-     request.metaData().set("referrer", d->m_referrer);
+     request.setReferrer(d->m_referrer);
 
   request.frameName = _target.isEmpty() ? d->m_doc->baseTarget() : _target ;
 
@@ -1566,9 +1564,10 @@ void Frame::submitForm( const char *action, const QString &url, const FormData &
     d->m_submitForm->target = _target;
     d->m_submitForm->submitContentType = contentType;
     d->m_submitForm->submitBoundary = boundary;
+  } else {
+      request.setURL(u);
+      submitForm(request);
   }
-  else
-    submitForm(u, request);
 }
 
 
index 29036fee0734f485320d4ebcf2c2e7973257603e..d1bb8a5f2a180485c1c5184fab52d4d6339624cf 100644 (file)
@@ -209,16 +209,10 @@ public:
    * are generating the HTML on the fly, it may be useful to specify
    * a directory so that any images are found.
    *
-   * @param xOffset is the initial horizontal scrollbar value. Usually
-   * you don't want to use this.
-   *
-   * @param yOffset is the initial vertical scrollbar value. Usually
-   * you don't want to use this.
-   *
    * All child frames and the old document are removed if you call
    * this method.
    */
-  virtual void begin( const KURL &url = KURL(), int xOffset = 0, int yOffset = 0 );
+  virtual void begin( const KURL &url = KURL());
 
   /**
    * Writes another part of the HTML code to the widget.
@@ -549,7 +543,8 @@ public:
   
   void selectClosestWordFromMouseEvent(const MouseEvent&, NodeImpl* innerNode, int x, int y);
 
-  virtual void urlSelected(const QString& url, const QString& target, const ResourceRequest& request = ResourceRequest());
+  virtual void urlSelected(const QString& url, const QString& target);
+  virtual void urlSelected(const ResourceRequest&, const QString& target);
 
 
   // Methods with platform-specific overrides (and no base class implementation).
@@ -595,9 +590,9 @@ public:
   virtual void saveDocumentState() = 0;
   virtual void restoreDocumentState() = 0;
   virtual bool canGoBackOrForward(int distance) const = 0;
-  virtual void openURLRequest(const KURL&, const ResourceRequest&) = 0;
-  virtual void submitForm(const KURL&, const ResourceRequest&) = 0;
-  virtual void urlSelected(const KURL&, const ResourceRequest&) = 0;
+  virtual void openURLRequest(const ResourceRequest&) = 0;
+  virtual void submitForm(const ResourceRequest&) = 0;
+  virtual void urlSelected(const ResourceRequest&) = 0;
   virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults&) = 0;
   virtual bool passWheelEventToChildWidget(NodeImpl *) = 0;
   virtual bool lastEventIsMouseUp() const = 0;
index e4edf4a795bc9ba2c1cbf96d6ba302d9ab8c9cee..d49de74b8f7bb6d77d201718774c87a206eb59bb 100644 (file)
 #ifndef ResourceRequest_H_
 #define ResourceRequest_H_
 
-#include "PlatformString.h"
 #include "formdata.h"
-#include <kxmlcore/HashMap.h>
+#include "PlatformString.h"
+#include "KURL.h"
 
 namespace WebCore {
 
     struct ResourceRequest {
-        
-        QString frameName;
-        FormData postData;
-        bool reload;
-        QString serviceType;
-        int xOffset;
-        int yOffset;
-        
-        ResourceRequest() : reload(false), xOffset(0), yOffset(0), m_doPost(false), m_lockHistory(false) { }
-        
+
+        ResourceRequest() : m_lockHistory(false), reload(false), m_doPost(false) { }
+        explicit ResourceRequest(const KURL& url) : m_lockHistory(false), reload(false), m_url(url), m_doPost(false) { }
+
+        const KURL& url() const { return m_url; }
+        void setURL(const KURL& url) { m_url = url; }
+
         QString contentType() const { return m_contentType; }
         void setContentType(const QString &t) { m_contentType = t; }
         
@@ -53,14 +50,27 @@ namespace WebCore {
         bool lockHistory() const { return m_lockHistory; }
         void setLockHistory(bool lock) { m_lockHistory = lock; }
         
-        HashMap<DOMString, DOMString>& metaData() { return m_metadata; }
-        const HashMap<DOMString, DOMString>& metaData() const { return m_metadata; }
+        const String& referrer() const { return m_referrer; }
+        void setReferrer(const String& referrer) { m_referrer = referrer; }
+
+        // FIXME: these two parameters are specific to frame opening,
+        // should move to FrameRequest once we have that
+        QString frameName;
+    private:
+        bool m_lockHistory;
+
+    public:
+        // FIXME: the response MIME type shouldn't be in here, it
+        // should be in some kind of response object
+        String m_responseMIMEType;
         
+        FormData postData;
+        bool reload;
     private:
+        KURL m_url;
+        String m_referrer;
         QString m_contentType;
         bool m_doPost;
-        bool m_lockHistory;
-        HashMap<String, String> m_metadata;
     };
 
 }
index 706528cc57fe1e24aa5824d49e05201cf33fe1c9..14c46bcb750fc36931ffc819a6d74931007bd95a 100644 (file)
@@ -174,14 +174,13 @@ bool FrameWin::canGoBackOrForward(int) const { notImplemented(); return 0; }
 void FrameWin::issuePasteAndMatchStyleCommand() { notImplemented(); }
 Plugin* FrameWin::createPlugin(KURL const&,QStringList const&,QStringList const&,QString const&) { notImplemented(); return 0; }
 
-void BrowserExtensionWin::openURLRequest(KURL const&,struct WebCore::ResourceRequest const&) { notImplemented(); }
 bool BrowserExtensionWin::canRunModal() { notImplemented(); return 0; }
 void BrowserExtensionWin::openURLNotify() { notImplemented(); }
-void BrowserExtensionWin::createNewWindow(KURL const&,struct WebCore::ResourceRequest const&,struct WebCore::WindowArgs const&,Frame*&) { notImplemented(); }
+void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&,struct WebCore::WindowArgs const&,Frame*&) { notImplemented(); }
 bool BrowserExtensionWin::canRunModalNow() { notImplemented(); return 0; }
 void BrowserExtensionWin::runModal() { notImplemented(); }
 void BrowserExtensionWin::goBackOrForward(int) { notImplemented(); }
-void BrowserExtensionWin::createNewWindow(KURL const&,struct WebCore::ResourceRequest const&) { notImplemented(); }
+void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&) { notImplemented(); }
 
 void RenderCanvasImage::setNeedsImageUpdate() { notImplemented(); }
 
@@ -231,7 +230,7 @@ void FrameWin::clearUndoRedoOperations(void) { }
 QString FrameWin::incomingReferrer() const { return QString(); }
 void FrameWin::clearRecordedFormValues() { }
 void FrameWin::recordFormValue(QString const&,QString const&,WebCore::HTMLFormElementImpl*) { }
-void FrameWin::submitForm(KURL const&,struct WebCore::ResourceRequest const&) { }
+void FrameWin::submitForm(struct WebCore::ResourceRequest const&) { }
 void FrameWin::markMisspellingsInAdjacentWords(WebCore::VisiblePosition const&) { }
 void FrameWin::respondToChangedContents() { }