WebKit:
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 5 Mar 2004 19:02:10 +0000 (19:02 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 5 Mar 2004 19:02:10 +0000 (19:02 +0000)
commita5fc7eec777c61748059c900cb96d8b81684575e
tree3bfd1ae39ad08427475ce54d4f2bc40683cd73cb
parent48b458b7a324c1174f8f83d074ca45a57e1632a7
WebKit:

        First cut at WebKit support for showing error pages for unreachable URLs.
        This doesn't work quite right with the back/forward list yet, but is
        good enough for demos.

        Reviewed by Darin.

        * WebView.subproj/WebBaseResourceHandleDelegate.m:
        (-[WebBaseResourceHandleDelegate didReceiveResponse:]):
        use new _webDataRequextExternalURL to share code

        * WebView.subproj/WebDataProtocol.h:
        Three new methods (all internal to WebKit):
        -[NSURLRequest _webDataRequestUnreachableURL], -[NSURLRequest _webDataRequestExternalURL],
        -[NSURLRequest _webDataRequestSetUnreachableURL]
        * WebView.subproj/WebDataProtocol.m:
        new unreachableURL field of WebDataRequestParameters
        (-[WebDataRequestParameters copyWithZone:]):
        copy new field
        (-[WebDataRequestParameters dealloc]):
        release new field
        (-[NSURLRequest _webDataRequestUnreachableURL]):
        read new field
        (-[NSURLRequest _webDataRequestExternalURL]):
        new method, returns baseURL or "about:blank" for webdata protocol requests. This
        was done in multiple places previously.
        (-[NSURLRequest _webDataRequestExternalRequest]):
        now calls _webDataRequestExternalURL to share code
        (-[NSMutableURLRequest _webDataRequestSetUnreachableURL:]):
        write new field

        * WebView.subproj/WebDataSource.m:
        (-[WebDataSource unreachableURL]):
        new method, might become API; returns the unreachable URL, if any, for which this datasource
        holds placeholder content
        (-[WebDataSource _URLForHistory]):
        new method, returns the URL to be stored in History for this dataSource. This returns nil
        for run-of-the-mill WebDataProtocol URLs (replacing code elsewhere that checked for this
        case) but returns the unreachableURL for the case where this datasource holds placeholder
        content.
        (-[WebDataSource _setTitle:]):
        now calls _URLForHistory

        * WebView.subproj/WebDataSourcePrivate.h:
        added unreachableURL in the should-become-API section, and _URLForHistory elsewhere

        * WebView.subproj/WebFrame.m:
        (-[WebFrame loadPlaceholderHTMLString:baseURL:unreachableURL:]):
        new should-become-API method for displaying an error page for an unreachable URL
        (-[WebFrame loadPropertyList:]):
        updated to pass nil for unreachableURL
        (-[WebFrame _webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        added unreachableURL parameter, which gets set on the data request
        (-[WebFrame _addBackForwardItemClippedAtTarget:]):
        use _URLForHistory instead of just checking for WebDataProtocol
        (-[WebFrame _createItem:]):
        use unreachableURL if there is one
        (-[WebFrame _transitionToCommitted:]):
        use _URLForHistory instead of just checking for WebDataProtocol
        (-[WebFrame _isLoadComplete]):
        check whether a new load has started in the delegate callback and if so, don't
        reset the loading state here
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        added unreachableURL parameter, which gets passed through
        (-[WebFrame loadData:MIMEType:textEncodingName:baseURL:]):
        send nil unreachableURL parameter
        (-[WebFrame _loadHTMLString:baseURL:unreachableURL:]):
        new bottleneck method for loadHTMLString:baseURL: and loadPlaceholderHTMLString:baseURL:unreachableURL:;
        this is the guts of loadHTMLString:baseURL: with the new unreachableURL parameter passed through
        (-[WebFrame loadHTMLString:baseURL:]):
        now calls new bottleneck method

        * WebView.subproj/WebFramePrivate.h:
        added loadPlaceholderString:baseURL:unreachableURL: to should-be-API section; added unreachableURL
        parameter to _webDataRequestForData:MIMEType:textEncodingName:baseURL:

WebBrowser:

        First cut at WebBrowser support for showing error pages for unreachable URLs.
        This doesn't work quite right with the back/forward list yet, but is
        good enough for demos. The old sheet-using code remains intact, and there's
        a menu item in the Debug menu to try the new way (old way is still default
        for now).

        Reviewed by Darin.

        * PreferenceKeys.h:
        added DebugDisplayErrorsAsPagesPreferenceKey; also deleted a couple of unused
        old preference keys.

        * BrowserWebController.h:
        added showErrorPageForURL:withTitle:message:

        * BrowserWebController.m:
        (-[BrowserWebView webView:unableToImplementPolicyWithError:frame:]):
        use showErrorPageForURL:... if the preference is set that way
        (-[BrowserWebView errorPageHTMLWithTitle:message:]):
        new method, returns an HTML string for the error page. This will eventually be
        done reading resources from disk no doubt, but for now we just display a simple
        page that has the same text as the sheet.
        (-[BrowserWebView showErrorPageForURL:withTitle:message:]):
        new method, uses new loadPlaceholderHTMLString:baseURL:unreachableURL: to put
        up an error page in the webview
        (-[BrowserWebView expectedOrCurrentURL]):
        use unreachableURL if there is one

        * Debug/DebugUtilities.m:
        (-[DebugUtilities createDebugMenu]):
        add menu item "Show Page Load Errors Inline"
        (-[NSApplication validate_toggleDisplayLoadErrorsAsPages:]):
        new method, sets the checkmark on the new menu item appropriately
        (-[NSApplication toggleDisplayLoadErrorsAsPages:]):
        new method, toggles the state of the preference

        * LoadProgressMonitor.m:
        (-[LoadProgressMonitor _createProgressEntryWithRequest:dataSource:]):
        use unreachableURL if there is one
        (-[LoadProgressMonitor webView:resource:didReceiveResponse:fromDataSource:]):
        ditto

        * LocationChangeError.m:
        (-[LocationChangeHandler displayOrRememberLocationChangeError:forDataSource:]):
        use showErrorPage:... if the preference is set that way

        * LocationChangeHandler.m:
        (-[LocationChangeHandler webView:locationChangeDone:forDataSource:]):
        use previously-fetched local variable "frame" rather than getting it from
        the dataSource again. This is not only trivially faster in the normal case,
        but also avoids a bug when the code earlier in this method triggers another
        page load (as in the showErrorPage:... case).

        * English.lproj/Localizable.strings:
        updated for these changes

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6176 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
WebKit/WebView.subproj/WebDataProtocol.h
WebKit/WebView.subproj/WebDataProtocol.m
WebKit/WebView.subproj/WebDataSource.m
WebKit/WebView.subproj/WebDataSourcePrivate.h
WebKit/WebView.subproj/WebFrame.m
WebKit/WebView.subproj/WebFramePrivate.h
WebKit/WebView.subproj/WebLoader.m