Changeset 167633 in webkit


Ignore:
Timestamp:
Apr 21, 2014 4:51:15 PM (10 years ago)
Author:
andersca@apple.com
Message:

Errors passed to delegate methods should have recovery attempters
https://bugs.webkit.org/show_bug.cgi?id=131957
<rdar://problem/16642539>

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.h: Added.
  • UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.mm: Added.
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::createErrorWithRecoveryAttempter):
(WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):

  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.h: Added.
  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm: Added.

(-[WKReloadFrameErrorRecoveryAttempter initWithWebView:frameHandle:urlString:]):
(-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):

  • WebKit2.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit2
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r167632 r167633  
     12014-04-21  Anders Carlsson  <andersca@apple.com>
     2
     3        Errors passed to delegate methods should have recovery attempters
     4        https://bugs.webkit.org/show_bug.cgi?id=131957
     5        <rdar://problem/16642539>
     6
     7        Reviewed by Tim Horton.
     8
     9        * UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.h: Added.
     10        * UIProcess/API/Cocoa/_WKErrorRecoveryAttempting.mm: Added.
     11        * UIProcess/Cocoa/NavigationState.mm:
     12        (WebKit::createErrorWithRecoveryAttempter):
     13        (WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
     14        (WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):
     15        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.h: Added.
     16        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm: Added.
     17        (-[WKReloadFrameErrorRecoveryAttempter initWithWebView:frameHandle:urlString:]):
     18        (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
     19        * WebKit2.xcodeproj/project.pbxproj:
     20
    1212014-04-21  Eric Carlson  <eric.carlson@apple.com>
    222
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r167611 r167633  
    2929#if WK_API_ENABLED
    3030
     31#import "_WKErrorRecoveryAttempting.h"
     32#import "_WKFrameHandleInternal.h"
    3133#import "APINavigationData.h"
    3234#import "APIURL.h"
     
    4648#import "WKNavigationInternal.h"
    4749#import "WKNavigationResponseInternal.h"
     50#import "WKReloadFrameErrorRecoveryAttempter.h"
    4851#import "WKWebViewInternal.h"
    4952#import "WebFrameProxy.h"
     
    382385}
    383386
     387static RetainPtr<NSError> createErrorWithRecoveryAttempter(WKWebView *webView, WebFrameProxy& webFrameProxy, NSError *originalError)
     388{
     389    RefPtr<API::FrameHandle> frameHandle = API::FrameHandle::create(webFrameProxy.frameID());
     390
     391    auto recoveryAttempter = adoptNS([[WKReloadFrameErrorRecoveryAttempter alloc] initWithWebView:webView frameHandle:wrapper(*frameHandle) urlString:originalError.userInfo[NSURLErrorFailingURLStringErrorKey]]);
     392
     393    auto userInfo = adoptNS([[NSMutableDictionary alloc] initWithObjectsAndKeys:recoveryAttempter.get(), _WKRecoveryAttempterErrorKey, nil]);
     394
     395    if (NSDictionary *originalUserInfo = originalError.userInfo)
     396        [userInfo addEntriesFromDictionary:originalUserInfo];
     397
     398    return adoptNS([[NSError alloc] initWithDomain:originalError.domain code:originalError.code userInfo:userInfo.get()]);
     399}
     400
    384401void NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError& error, API::Object*)
    385402{
     
    401418        return;
    402419
    403     [navigationDelegate webView:m_navigationState.m_webView didFailProvisionalNavigation:navigation.get() withError:error];
     420    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, *webFrameProxy, error);
     421    [navigationDelegate webView:m_navigationState.m_webView didFailProvisionalNavigation:navigation.get() withError:errorWithRecoveryAttempter.get()];
    404422}
    405423
     
    480498        navigation = m_navigationState.m_navigations.get(navigationID).get();
    481499
    482     [navigationDelegate webView:m_navigationState.m_webView didFailNavigation:navigation withError:error];
     500    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, *webFrameProxy, error);
     501    [navigationDelegate webView:m_navigationState.m_webView didFailNavigation:navigation withError:errorWithRecoveryAttempter.get()];
    483502}
    484503
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r167586 r167633  
    377377                1ACECD2417162DB1001FC9EF /* StorageAreaMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACECD2217162DB1001FC9EF /* StorageAreaMap.cpp */; };
    378378                1ACECD2517162DB1001FC9EF /* StorageAreaMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ACECD2317162DB1001FC9EF /* StorageAreaMap.h */; };
     379                1AD01BC81905D37E00C9C45F /* _WKErrorRecoveryAttempting.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AD01BC61905D37E00C9C45F /* _WKErrorRecoveryAttempting.mm */; };
     380                1AD01BC91905D37E00C9C45F /* _WKErrorRecoveryAttempting.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD01BC71905D37E00C9C45F /* _WKErrorRecoveryAttempting.h */; settings = {ATTRIBUTES = (Private, ); }; };
     381                1AD01BCC1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AD01BCA1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm */; };
     382                1AD01BCD1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD01BCB1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.h */; };
    379383                1AD09F2B1743F8E600A95E50 /* WKNPAPIPlugInContainer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AD09F291743F8E600A95E50 /* WKNPAPIPlugInContainer.mm */; };
    380384                1AD09F2C1743F8E600A95E50 /* WKNPAPIPlugInContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD09F2A1743F8E600A95E50 /* WKNPAPIPlugInContainer.h */; };
     
    21652169                1ACECD2217162DB1001FC9EF /* StorageAreaMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageAreaMap.cpp; sourceTree = "<group>"; };
    21662170                1ACECD2317162DB1001FC9EF /* StorageAreaMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageAreaMap.h; sourceTree = "<group>"; };
     2171                1AD01BC61905D37E00C9C45F /* _WKErrorRecoveryAttempting.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKErrorRecoveryAttempting.mm; sourceTree = "<group>"; };
     2172                1AD01BC71905D37E00C9C45F /* _WKErrorRecoveryAttempting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKErrorRecoveryAttempting.h; sourceTree = "<group>"; };
     2173                1AD01BCA1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKReloadFrameErrorRecoveryAttempter.mm; sourceTree = "<group>"; };
     2174                1AD01BCB1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKReloadFrameErrorRecoveryAttempter.h; sourceTree = "<group>"; };
    21672175                1AD09F291743F8E600A95E50 /* WKNPAPIPlugInContainer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNPAPIPlugInContainer.mm; sourceTree = "<group>"; };
    21682176                1AD09F2A1743F8E600A95E50 /* WKNPAPIPlugInContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNPAPIPlugInContainer.h; sourceTree = "<group>"; };
     
    42654273                                1AFE436418B6C081009C7A48 /* UIDelegate.h */,
    42664274                                1AFE436318B6C081009C7A48 /* UIDelegate.mm */,
     4275                                1AD01BCB1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.h */,
     4276                                1AD01BCA1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm */,
    42674277                                2D7AAFD218C8640600A7ACD4 /* WKWebViewContentProvider.h */,
    42684278                                2DC6D9C118C44A610043BAD4 /* WKWebViewContentProviderRegistry.h */,
     
    46294639                                379A873718BBFE0F00588AF2 /* _WKElementAction.mm */,
    46304640                                379A873B18BBFF0700588AF2 /* _WKElementActionInternal.h */,
     4641                                1AD01BC71905D37E00C9C45F /* _WKErrorRecoveryAttempting.h */,
     4642                                1AD01BC61905D37E00C9C45F /* _WKErrorRecoveryAttempting.mm */,
    46314643                                005D158E18E4C4EB00734619 /* _WKFindDelegate.h */,
    46324644                                37A64E5418F38E3C00EB30F1 /* _WKFormDelegate.h */,
     
    70047016                                516A4A5D120A2CCD00C05B7F /* APIError.h in Headers */,
    70057017                                1A433F0D113C53DD00FACDE9 /* WebErrors.h in Headers */,
     7018                                1AD01BC91905D37E00C9C45F /* _WKErrorRecoveryAttempting.h in Headers */,
    70067019                                BC032DB910F4380F0058C15A /* WebEvent.h in Headers */,
    70077020                                BC032DBB10F4380F0058C15A /* WebEventConversion.h in Headers */,
     
    72197232                                51290993183ACEAF005522A6 /* WebIDBServerConnection.h in Headers */,
    72207233                                370F34A31829BE1E009027C8 /* WKNavigationData.h in Headers */,
     7234                                1AD01BCD1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.h in Headers */,
    72217235                                1AB7D78D1288CD9A00CFD08C /* WKDownload.h in Headers */,
    72227236                                BC4075FC124FF0270068F20A /* WKError.h in Headers */,
     
    81428156                                BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */,
    81438157                                378E1A4918208CD60031007A /* WKNSString.mm in Sources */,
     8158                                1AD01BCC1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm in Sources */,
    81448159                                C55CB5B818C2A5D600CA81E1 /* WKFormSelectPicker.mm in Sources */,
    81458160                                BC06F43012DBB9B6002D78DE /* GeolocationPermissionRequestManager.cpp in Sources */,
     
    85788593                                33367657130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp in Sources */,
    85798594                                1A8E7D3C18C15149005A702A /* VisitedLinkTableControllerMessageReceiver.cpp in Sources */,
     8595                                1AD01BC81905D37E00C9C45F /* _WKErrorRecoveryAttempting.mm in Sources */,
    85808596                                510AFFB916542048001BA05E /* WebResourceLoader.cpp in Sources */,
    85818597                                3F889D14188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm in Sources */,
Note: See TracChangeset for help on using the changeset viewer.