Changeset 17238 in webkit


Ignore:
Timestamp:
Oct 23, 2006, 8:28:02 PM (19 years ago)
Author:
darin
Message:

WebCore:

Reviewed by Maciej.

  • converted WebFrameLoader to C++
  • WebCore.exp: Added many new entry points for WebKit.
  • WebCore.xcodeproj/project.pbxproj: Made more files private (SPI).
  • bridge/mac/WebCoreFrameBridge.h:
  • bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge initMainFrameWithPage:withEditorClient:]): (-[WebCoreFrameBridge initSubframeWithOwnerElement:withEditorClient:]): (-[WebCoreFrameBridge dealloc]): (-[WebCoreFrameBridge close]): (-[WebCoreFrameBridge clearFrame]): (-[WebCoreFrameBridge setFrameLoaderClient:]): (-[WebCoreFrameBridge frameLoader]): (-[WebCoreFrameBridge setTitle:]): (-[WebCoreFrameBridge didFirstLayout]): (-[WebCoreFrameBridge notifyIconChanged:]): (-[WebCoreFrameBridge originalRequestURL]): (-[WebCoreFrameBridge isLoadTypeReload]): (-[WebCoreFrameBridge frameDetached]): (-[WebCoreFrameBridge tokenizerProcessedData]): (-[WebCoreFrameBridge receivedData:textEncodingName:]): (-[WebCoreFrameBridge startLoadingResource:withMethod:URL:customHeaders:]): (-[WebCoreFrameBridge objectLoadedFromCacheWithURL:response:data:]): (-[WebCoreFrameBridge startLoadingResource:withMethod:URL:customHeaders:postData:]): (-[WebCoreFrameBridge reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:]): (-[WebCoreFrameBridge reportClientRedirectCancelled:]): (-[WebCoreFrameBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]): (-[WebCoreFrameBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]): (-[WebCoreFrameBridge syncLoadResourceWithMethod:URL:customHeaders:postData:finalURL:responseHeaders:statusCode:]): (-[WebCoreFrameBridge incomingReferrer]): (-[WebCoreFrameBridge isReloading]): (-[WebCoreFrameBridge handledOnloadEvents]): (-[WebCoreFrameBridge mainResourceURLResponse]): (-[WebCoreFrameBridge loadEmptyDocumentSynchronously]):
  • loader/mac/WebDocumentLoader.h:
  • loader/mac/WebDocumentLoader.mm: (-[WebDocumentLoader frameLoader]): (-[WebDocumentLoader dealloc]): (-[WebDocumentLoader mainResourceData]): (-[WebDocumentLoader setRequest:]): (-[WebDocumentLoader bridge]): (-[WebDocumentLoader setMainDocumentError:]): (-[WebDocumentLoader mainReceivedError:complete:]): (-[WebDocumentLoader stopLoading]): (-[WebDocumentLoader setupForReplace]): (-[WebDocumentLoader commitIfReady]): (-[WebDocumentLoader finishedLoading]): (-[WebDocumentLoader commitLoadWithData:]): (-[WebDocumentLoader doesProgressiveLoadWithMIMEType:]): (-[WebDocumentLoader setupForReplaceByMIMEType:]): (-[WebDocumentLoader updateLoading]): (-[WebDocumentLoader setFrame:]): (-[WebDocumentLoader attachToFrame]): (-[WebDocumentLoader detachFromFrame]): (-[WebDocumentLoader prepareForLoadStart]): (-[WebDocumentLoader setPrimaryLoadComplete:]): (-[WebDocumentLoader isLoadingInAPISense]): (-[WebDocumentLoader setTitle:]):
  • loader/mac/WebFrameLoader.h: (WebCore::FrameLoader::frame):
  • loader/mac/WebFrameLoader.mm: (WebCore::FrameLoader::FrameLoader): (WebCore::FrameLoader::~FrameLoader): (WebCore::FrameLoader::activeDocumentLoader): (WebCore::FrameLoader::addPlugInStreamLoader): (WebCore::FrameLoader::removePlugInStreamLoader): (WebCore::FrameLoader::defersCallbacksChanged): (WebCore::FrameLoader::defersCallbacks): (WebCore::setAllDefersCallbacks): (WebCore::FrameLoader::setDefersCallbacks): (WebCore::cancelAll): (WebCore::FrameLoader::stopLoadingPlugIns): (WebCore::FrameLoader::isLoadingMainResource): (WebCore::FrameLoader::isLoadingSubresources): (WebCore::FrameLoader::isLoadingPlugIns): (WebCore::FrameLoader::isLoading): (WebCore::FrameLoader::stopLoadingSubresources): (WebCore::FrameLoader::addSubresourceLoader): (WebCore::FrameLoader::removeSubresourceLoader): (WebCore::FrameLoader::mainResourceData): (WebCore::FrameLoader::releaseMainResourceLoader): (WebCore::FrameLoader::cancelMainResourceLoad): (WebCore::FrameLoader::startLoadingMainResource): (WebCore::FrameLoader::stopLoading): (WebCore::FrameLoader::setDocumentLoader): (WebCore::FrameLoader::documentLoader): (WebCore::FrameLoader::setPolicyDocumentLoader): (WebCore::FrameLoader::provisionalDocumentLoader): (WebCore::FrameLoader::setProvisionalDocumentLoader): (WebCore::FrameLoader::state): (WebCore::FrameLoader::timeOfLastCompletedLoad): (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::setState): (WebCore::FrameLoader::clearProvisionalLoad): (WebCore::FrameLoader::markLoadComplete): (WebCore::FrameLoader::commitProvisionalLoad): (WebCore::FrameLoader::stopLoadingSubframes): (WebCore::FrameLoader::startLoading): (WebCore::FrameLoader::setupForReplace): (WebCore::FrameLoader::identifierForInitialRequest): (WebCore::FrameLoader::willSendRequest): (WebCore::FrameLoader::didReceiveAuthenticationChallenge): (WebCore::FrameLoader::didCancelAuthenticationChallenge): (WebCore::FrameLoader::didReceiveResponse): (WebCore::FrameLoader::didReceiveData): (WebCore::FrameLoader::didFinishLoad): (WebCore::FrameLoader::didFailToLoad): (WebCore::FrameLoader::privateBrowsingEnabled): (WebCore::FrameLoader::originalRequest): (WebCore::FrameLoader::receivedMainResourceError): (WebCore::FrameLoader::clientRedirectCancelledOrFinished): (WebCore::FrameLoader::clientRedirected): (WebCore::FrameLoader::shouldReload): (WebCore::FrameLoader::load): (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): (WebCore::FrameLoader::closeOldDataSources): (WebCore::FrameLoader::opened): (WebCore::FrameLoader::initialRequest): (WebCore::FrameLoader::receivedData): (WebCore::FrameLoader::setRequest): (WebCore::FrameLoader::download): (WebCore::FrameLoader::bridge): (WebCore::FrameLoader::handleFallbackContent): (WebCore::FrameLoader::isStopping): (WebCore::FrameLoader::setupForReplaceByMIMEType): (WebCore::FrameLoader::setResponse): (WebCore::FrameLoader::mainReceivedError): (WebCore::FrameLoader::finishedLoading): (WebCore::FrameLoader::notifyIconChanged): (WebCore::FrameLoader::URL): (WebCore::FrameLoader::cancelledError): (WebCore::FrameLoader::fileDoesNotExistError): (WebCore::FrameLoader::willUseArchive): (WebCore::FrameLoader::isArchiveLoadPending): (WebCore::FrameLoader::cancelPendingArchiveLoad): (WebCore::FrameLoader::handleUnimplementablePolicy): (WebCore::FrameLoader::cannotShowMIMEType): (WebCore::FrameLoader::interruptionForPolicyChangeError): (WebCore::FrameLoader::isHostedByObjectElement): (WebCore::FrameLoader::isLoadingMainFrame): (WebCore::FrameLoader::canShowMIMEType): (WebCore::FrameLoader::representationExistsForURLScheme): (WebCore::FrameLoader::generatedMIMETypeForURLScheme): (WebCore::FrameLoader::checkNavigationPolicy): (WebCore::FrameLoader::checkContentPolicy): (WebCore::FrameLoader::cancelContentPolicyCheck): (WebCore::FrameLoader::shouldReloadToHandleUnreachableURL): (WebCore::FrameLoader::reloadAllowingStaleData): (WebCore::FrameLoader::reload): (WebCore::FrameLoader::didReceiveServerRedirectForProvisionalLoadForFrame): (WebCore::FrameLoader::finishedLoadingDocument): (WebCore::FrameLoader::committedLoad): (WebCore::FrameLoader::isReplacing): (WebCore::FrameLoader::setReplacing): (WebCore::FrameLoader::revertToProvisional): (WebCore::FrameLoader::setMainDocumentError): (WebCore::FrameLoader::mainReceivedCompleteError): (WebCore::FrameLoader::finalSetupForReplace): (WebCore::FrameLoader::prepareForLoadStart): (WebCore::FrameLoader::subframeIsLoading): (WebCore::FrameLoader::willChangeTitle): (WebCore::FrameLoader::didChangeTitle): (WebCore::FrameLoader::loadType): (WebCore::FrameLoader::invalidatePendingPolicyDecision): (WebCore::FrameLoader::checkNewWindowPolicy): (WebCore::FrameLoader::continueAfterNewWindowPolicy): (WebCore::FrameLoader::continueAfterNavigationPolicy): (WebCore::FrameLoader::continueAfterWillSubmitForm): (WebCore::FrameLoader::continueLoadRequestAfterNavigationPolicy): (WebCore::FrameLoader::didFirstLayout): (WebCore::FrameLoader::frameLoadCompleted): (WebCore::FrameLoader::firstLayoutDone): (WebCore::FrameLoader::isQuickRedirectComing): (WebCore::FrameLoader::transitionToCommitted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): (WebCore::FrameLoader::continueLoadRequestAfterNewWindowPolicy): (WebCore::FrameLoader::sendRemainingDelegateMessages): (WebCore::FrameLoader::requestFromDelegate): (WebCore::FrameLoader::post): (WebCore::FrameLoader::detachChildren): (WebCore::FrameLoader::detachFromParent): (WebCore::FrameLoader::addExtraFieldsToRequest): (WebCore::FrameLoader::safeLoad): (WebCore::FrameLoader::actionInformation): (WebCore::FrameLoader::checkLoadComplete): (WebCore::FrameLoader::setFrameLoaderClient): (WebCore::FrameLoader::client): (WebCore::FrameLoader::asDelegate): (-[WebCoreFrameLoaderAsDelegate initWithLoader:]): (-[WebCoreFrameLoaderAsDelegate detachFromLoader]): (-[WebCoreFrameLoaderAsDelegate continueFragmentScrollAfterNavigationPolicy:formState:]): (-[WebCoreFrameLoaderAsDelegate continueAfterNewWindowPolicy:]): (-[WebCoreFrameLoaderAsDelegate continueAfterNavigationPolicy:]): (-[WebCoreFrameLoaderAsDelegate continueAfterWillSubmitForm:]): (-[WebCoreFrameLoaderAsDelegate continueLoadRequestAfterNavigationPolicy:formState:]): (-[WebCoreFrameLoaderAsDelegate continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
  • loader/mac/WebLoader.h: (WebCore::WebResourceLoader::identifier): (WebCore::WebResourceLoader::reachedTerminalState): (WebCore::WebResourceLoader::cancelled):
  • loader/mac/WebLoader.mm: (WebCore::WebResourceLoader::WebResourceLoader): (WebCore::WebResourceLoader::releaseResources): (WebCore::WebResourceLoader::load): (WebCore::WebResourceLoader::frameLoader): (WebCore::WebResourceLoader::willSendRequest): (WebCore::WebResourceLoader::didReceiveAuthenticationChallenge): (WebCore::WebResourceLoader::didCancelAuthenticationChallenge): (WebCore::WebResourceLoader::didReceiveResponse): (WebCore::WebResourceLoader::didReceiveData): (WebCore::WebResourceLoader::didFinishLoading): (WebCore::WebResourceLoader::didFinishLoadingOnePart): (WebCore::WebResourceLoader::didFail): (WebCore::WebResourceLoader::willCacheResponse): (WebCore::WebResourceLoader::didCancel): (WebCore::WebResourceLoader::cancel): (WebCore::WebResourceLoader::cancelledError): (WebCore::WebResourceLoader::delegate):
  • loader/mac/WebMainResourceLoader.h:
  • loader/mac/WebMainResourceLoader.mm: (WebCore::MainResourceLoader::MainResourceLoader): (WebCore::MainResourceLoader::create): (WebCore::MainResourceLoader::receivedError): (WebCore::MainResourceLoader::didCancel): (WebCore::MainResourceLoader::interruptionForPolicyChangeError): (WebCore::MainResourceLoader::isPostOrRedirectAfterPost): (WebCore::MainResourceLoader::addData): (WebCore::MainResourceLoader::willSendRequest): (WebCore::MainResourceLoader::continueAfterContentPolicy): (WebCore::MainResourceLoader::didReceiveResponse): (WebCore::MainResourceLoader::didReceiveData): (WebCore::MainResourceLoader::didFinishLoading): (WebCore::MainResourceLoader::didFail): (WebCore::MainResourceLoader::loadNow): (WebCore::MainResourceLoader::policyDelegate):
  • loader/mac/WebNetscapePlugInStreamLoader.h:
  • loader/mac/WebNetscapePlugInStreamLoader.mm: (WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader): (WebCore::NetscapePlugInStreamLoader::create): (WebCore::NetscapePlugInStreamLoader::didReceiveResponse): (WebCore::NetscapePlugInStreamLoader::didFinishLoading): (WebCore::NetscapePlugInStreamLoader::didFail): (WebCore::NetscapePlugInStreamLoader::didCancel):
  • loader/mac/WebSubresourceLoader.h:
  • loader/mac/WebSubresourceLoader.mm: (-[WebCoreSubresourceHandle initWithLoader:]):

WebKit:

Reviewed by Maciej.

  • converted WebFrameLoader to C++
  • History/WebHistoryItem.m: (+[WebHistoryItem _closeObjectsInPendingPageCaches]):
  • Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
  • Plugins/WebNetscapePluginStream.mm: (-[WebNetscapePluginStream start]): (-[WebNetscapePluginStream stop]):
  • Plugins/WebPluginController.mm: (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]): (-[WebPluginController pluginView:receivedResponse:]):
  • WebCoreSupport/WebFrameBridge.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebView/WebDataSource.mm: (-[WebDataSource _loadFromPageCache:]): (-[WebDataSource _webView]): (-[WebDataSource webFrame]):
  • WebView/WebDocumentLoaderMac.h:
  • WebView/WebDocumentLoaderMac.m: (-[WebDocumentLoaderMac dealloc]): (-[WebDocumentLoaderMac attachToFrame]): (-[WebDocumentLoaderMac detachFromFrame]):
  • WebView/WebFrame.mm: (+[WebFrame _timeOfLastCompletedLoad]): (-[WebFrame _loadItem:withLoadType:]): (-[WebFrame _loadURL:referrer:intoChild:]): (-[WebFrame _currentBackForwardListItemToResetTo]): (-[WebFrame _itemForRestoringDocState]): (-[WebFrame _frameLoader]): (-[WebFrame _firstLayoutDone]): (-[WebFrame _loadType]): (-[WebFrame provisionalDataSource]): (-[WebFrame dataSource]): (-[WebFrame loadRequest:]): (-[WebFrame loadArchive:]): (-[WebFrame stopLoading]): (-[WebFrame reload]): (-[WebFrame _updateHistoryForCommit]): (-[WebFrame _updateHistoryForReload]): (-[WebFrame _updateHistoryForInternalLoad]): (-[WebFrame _deliverArchivedResourcesAfterDelay]): (-[WebFrame _willUseArchiveForRequest:originalURL:loader:]): (-[WebFrame _deliverArchivedResources]): (-[WebFrame _prepareForDataSourceReplacement]): (-[WebFrame _provisionalLoadStarted]):
  • WebView/WebFrameInternal.h:
  • WebView/WebHTMLView.m: (-[WebHTMLView _clearLastHitViewIfSelf]): (-[WebHTMLView _updateMouseoverWithEvent:]): (-[NSArray removeMouseMovedObserverUnconditionally]): (-[NSArray removeMouseMovedObserver]): (-[NSArray viewWillMoveToWindow:]): (-[NSArray viewDidMoveToWindow]): (-[WebHTMLView _canMakeTextSmaller]): (-[WebHTMLView _canMakeTextLarger]): (-[WebHTMLView _canMakeTextStandardSize]):
  • WebView/WebPDFView.mm: (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
  • WebView/WebView.mm: (-[WebView _close]): (-[WebView setDefersCallbacks:]): (-[WebView setCustomTextEncodingName:]):
Location:
trunk
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r17236 r17238  
     12006-10-23  Darin Adler  <darin@apple.com>
     2
     3        Reviewed by Maciej.
     4
     5        - converted WebFrameLoader to C++
     6
     7        * WebCore.exp: Added many new entry points for WebKit.
     8        * WebCore.xcodeproj/project.pbxproj: Made more files private (SPI).
     9
     10        * bridge/mac/WebCoreFrameBridge.h:
     11        * bridge/mac/WebCoreFrameBridge.mm:
     12        (-[WebCoreFrameBridge initMainFrameWithPage:withEditorClient:]):
     13        (-[WebCoreFrameBridge initSubframeWithOwnerElement:withEditorClient:]):
     14        (-[WebCoreFrameBridge dealloc]):
     15        (-[WebCoreFrameBridge close]):
     16        (-[WebCoreFrameBridge clearFrame]):
     17        (-[WebCoreFrameBridge setFrameLoaderClient:]):
     18        (-[WebCoreFrameBridge frameLoader]):
     19        (-[WebCoreFrameBridge setTitle:]):
     20        (-[WebCoreFrameBridge didFirstLayout]):
     21        (-[WebCoreFrameBridge notifyIconChanged:]):
     22        (-[WebCoreFrameBridge originalRequestURL]):
     23        (-[WebCoreFrameBridge isLoadTypeReload]):
     24        (-[WebCoreFrameBridge frameDetached]):
     25        (-[WebCoreFrameBridge tokenizerProcessedData]):
     26        (-[WebCoreFrameBridge receivedData:textEncodingName:]):
     27        (-[WebCoreFrameBridge startLoadingResource:withMethod:URL:customHeaders:]):
     28        (-[WebCoreFrameBridge objectLoadedFromCacheWithURL:response:data:]):
     29        (-[WebCoreFrameBridge startLoadingResource:withMethod:URL:customHeaders:postData:]):
     30        (-[WebCoreFrameBridge reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:]):
     31        (-[WebCoreFrameBridge reportClientRedirectCancelled:]):
     32        (-[WebCoreFrameBridge loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:]):
     33        (-[WebCoreFrameBridge postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:]):
     34        (-[WebCoreFrameBridge syncLoadResourceWithMethod:URL:customHeaders:postData:finalURL:responseHeaders:statusCode:]):
     35        (-[WebCoreFrameBridge incomingReferrer]):
     36        (-[WebCoreFrameBridge isReloading]):
     37        (-[WebCoreFrameBridge handledOnloadEvents]):
     38        (-[WebCoreFrameBridge mainResourceURLResponse]):
     39        (-[WebCoreFrameBridge loadEmptyDocumentSynchronously]):
     40        * loader/mac/WebDocumentLoader.h:
     41        * loader/mac/WebDocumentLoader.mm:
     42        (-[WebDocumentLoader frameLoader]):
     43        (-[WebDocumentLoader dealloc]):
     44        (-[WebDocumentLoader mainResourceData]):
     45        (-[WebDocumentLoader setRequest:]):
     46        (-[WebDocumentLoader bridge]):
     47        (-[WebDocumentLoader setMainDocumentError:]):
     48        (-[WebDocumentLoader mainReceivedError:complete:]):
     49        (-[WebDocumentLoader stopLoading]):
     50        (-[WebDocumentLoader setupForReplace]):
     51        (-[WebDocumentLoader commitIfReady]):
     52        (-[WebDocumentLoader finishedLoading]):
     53        (-[WebDocumentLoader commitLoadWithData:]):
     54        (-[WebDocumentLoader doesProgressiveLoadWithMIMEType:]):
     55        (-[WebDocumentLoader setupForReplaceByMIMEType:]):
     56        (-[WebDocumentLoader updateLoading]):
     57        (-[WebDocumentLoader setFrame:]):
     58        (-[WebDocumentLoader attachToFrame]):
     59        (-[WebDocumentLoader detachFromFrame]):
     60        (-[WebDocumentLoader prepareForLoadStart]):
     61        (-[WebDocumentLoader setPrimaryLoadComplete:]):
     62        (-[WebDocumentLoader isLoadingInAPISense]):
     63        (-[WebDocumentLoader setTitle:]):
     64        * loader/mac/WebFrameLoader.h:
     65        (WebCore::FrameLoader::frame):
     66        * loader/mac/WebFrameLoader.mm:
     67        (WebCore::FrameLoader::FrameLoader):
     68        (WebCore::FrameLoader::~FrameLoader):
     69        (WebCore::FrameLoader::activeDocumentLoader):
     70        (WebCore::FrameLoader::addPlugInStreamLoader):
     71        (WebCore::FrameLoader::removePlugInStreamLoader):
     72        (WebCore::FrameLoader::defersCallbacksChanged):
     73        (WebCore::FrameLoader::defersCallbacks):
     74        (WebCore::setAllDefersCallbacks):
     75        (WebCore::FrameLoader::setDefersCallbacks):
     76        (WebCore::cancelAll):
     77        (WebCore::FrameLoader::stopLoadingPlugIns):
     78        (WebCore::FrameLoader::isLoadingMainResource):
     79        (WebCore::FrameLoader::isLoadingSubresources):
     80        (WebCore::FrameLoader::isLoadingPlugIns):
     81        (WebCore::FrameLoader::isLoading):
     82        (WebCore::FrameLoader::stopLoadingSubresources):
     83        (WebCore::FrameLoader::addSubresourceLoader):
     84        (WebCore::FrameLoader::removeSubresourceLoader):
     85        (WebCore::FrameLoader::mainResourceData):
     86        (WebCore::FrameLoader::releaseMainResourceLoader):
     87        (WebCore::FrameLoader::cancelMainResourceLoad):
     88        (WebCore::FrameLoader::startLoadingMainResource):
     89        (WebCore::FrameLoader::stopLoading):
     90        (WebCore::FrameLoader::setDocumentLoader):
     91        (WebCore::FrameLoader::documentLoader):
     92        (WebCore::FrameLoader::setPolicyDocumentLoader):
     93        (WebCore::FrameLoader::provisionalDocumentLoader):
     94        (WebCore::FrameLoader::setProvisionalDocumentLoader):
     95        (WebCore::FrameLoader::state):
     96        (WebCore::FrameLoader::timeOfLastCompletedLoad):
     97        (WebCore::FrameLoader::provisionalLoadStarted):
     98        (WebCore::FrameLoader::setState):
     99        (WebCore::FrameLoader::clearProvisionalLoad):
     100        (WebCore::FrameLoader::markLoadComplete):
     101        (WebCore::FrameLoader::commitProvisionalLoad):
     102        (WebCore::FrameLoader::stopLoadingSubframes):
     103        (WebCore::FrameLoader::startLoading):
     104        (WebCore::FrameLoader::setupForReplace):
     105        (WebCore::FrameLoader::identifierForInitialRequest):
     106        (WebCore::FrameLoader::willSendRequest):
     107        (WebCore::FrameLoader::didReceiveAuthenticationChallenge):
     108        (WebCore::FrameLoader::didCancelAuthenticationChallenge):
     109        (WebCore::FrameLoader::didReceiveResponse):
     110        (WebCore::FrameLoader::didReceiveData):
     111        (WebCore::FrameLoader::didFinishLoad):
     112        (WebCore::FrameLoader::didFailToLoad):
     113        (WebCore::FrameLoader::privateBrowsingEnabled):
     114        (WebCore::FrameLoader::originalRequest):
     115        (WebCore::FrameLoader::receivedMainResourceError):
     116        (WebCore::FrameLoader::clientRedirectCancelledOrFinished):
     117        (WebCore::FrameLoader::clientRedirected):
     118        (WebCore::FrameLoader::shouldReload):
     119        (WebCore::FrameLoader::load):
     120        (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
     121        (WebCore::FrameLoader::closeOldDataSources):
     122        (WebCore::FrameLoader::opened):
     123        (WebCore::FrameLoader::initialRequest):
     124        (WebCore::FrameLoader::receivedData):
     125        (WebCore::FrameLoader::setRequest):
     126        (WebCore::FrameLoader::download):
     127        (WebCore::FrameLoader::bridge):
     128        (WebCore::FrameLoader::handleFallbackContent):
     129        (WebCore::FrameLoader::isStopping):
     130        (WebCore::FrameLoader::setupForReplaceByMIMEType):
     131        (WebCore::FrameLoader::setResponse):
     132        (WebCore::FrameLoader::mainReceivedError):
     133        (WebCore::FrameLoader::finishedLoading):
     134        (WebCore::FrameLoader::notifyIconChanged):
     135        (WebCore::FrameLoader::URL):
     136        (WebCore::FrameLoader::cancelledError):
     137        (WebCore::FrameLoader::fileDoesNotExistError):
     138        (WebCore::FrameLoader::willUseArchive):
     139        (WebCore::FrameLoader::isArchiveLoadPending):
     140        (WebCore::FrameLoader::cancelPendingArchiveLoad):
     141        (WebCore::FrameLoader::handleUnimplementablePolicy):
     142        (WebCore::FrameLoader::cannotShowMIMEType):
     143        (WebCore::FrameLoader::interruptionForPolicyChangeError):
     144        (WebCore::FrameLoader::isHostedByObjectElement):
     145        (WebCore::FrameLoader::isLoadingMainFrame):
     146        (WebCore::FrameLoader::canShowMIMEType):
     147        (WebCore::FrameLoader::representationExistsForURLScheme):
     148        (WebCore::FrameLoader::generatedMIMETypeForURLScheme):
     149        (WebCore::FrameLoader::checkNavigationPolicy):
     150        (WebCore::FrameLoader::checkContentPolicy):
     151        (WebCore::FrameLoader::cancelContentPolicyCheck):
     152        (WebCore::FrameLoader::shouldReloadToHandleUnreachableURL):
     153        (WebCore::FrameLoader::reloadAllowingStaleData):
     154        (WebCore::FrameLoader::reload):
     155        (WebCore::FrameLoader::didReceiveServerRedirectForProvisionalLoadForFrame):
     156        (WebCore::FrameLoader::finishedLoadingDocument):
     157        (WebCore::FrameLoader::committedLoad):
     158        (WebCore::FrameLoader::isReplacing):
     159        (WebCore::FrameLoader::setReplacing):
     160        (WebCore::FrameLoader::revertToProvisional):
     161        (WebCore::FrameLoader::setMainDocumentError):
     162        (WebCore::FrameLoader::mainReceivedCompleteError):
     163        (WebCore::FrameLoader::finalSetupForReplace):
     164        (WebCore::FrameLoader::prepareForLoadStart):
     165        (WebCore::FrameLoader::subframeIsLoading):
     166        (WebCore::FrameLoader::willChangeTitle):
     167        (WebCore::FrameLoader::didChangeTitle):
     168        (WebCore::FrameLoader::loadType):
     169        (WebCore::FrameLoader::invalidatePendingPolicyDecision):
     170        (WebCore::FrameLoader::checkNewWindowPolicy):
     171        (WebCore::FrameLoader::continueAfterNewWindowPolicy):
     172        (WebCore::FrameLoader::continueAfterNavigationPolicy):
     173        (WebCore::FrameLoader::continueAfterWillSubmitForm):
     174        (WebCore::FrameLoader::continueLoadRequestAfterNavigationPolicy):
     175        (WebCore::FrameLoader::didFirstLayout):
     176        (WebCore::FrameLoader::frameLoadCompleted):
     177        (WebCore::FrameLoader::firstLayoutDone):
     178        (WebCore::FrameLoader::isQuickRedirectComing):
     179        (WebCore::FrameLoader::transitionToCommitted):
     180        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
     181        (WebCore::FrameLoader::continueLoadRequestAfterNewWindowPolicy):
     182        (WebCore::FrameLoader::sendRemainingDelegateMessages):
     183        (WebCore::FrameLoader::requestFromDelegate):
     184        (WebCore::FrameLoader::post):
     185        (WebCore::FrameLoader::detachChildren):
     186        (WebCore::FrameLoader::detachFromParent):
     187        (WebCore::FrameLoader::addExtraFieldsToRequest):
     188        (WebCore::FrameLoader::safeLoad):
     189        (WebCore::FrameLoader::actionInformation):
     190        (WebCore::FrameLoader::checkLoadComplete):
     191        (WebCore::FrameLoader::setFrameLoaderClient):
     192        (WebCore::FrameLoader::client):
     193        (WebCore::FrameLoader::asDelegate):
     194        (-[WebCoreFrameLoaderAsDelegate initWithLoader:]):
     195        (-[WebCoreFrameLoaderAsDelegate detachFromLoader]):
     196        (-[WebCoreFrameLoaderAsDelegate continueFragmentScrollAfterNavigationPolicy:formState:]):
     197        (-[WebCoreFrameLoaderAsDelegate continueAfterNewWindowPolicy:]):
     198        (-[WebCoreFrameLoaderAsDelegate continueAfterNavigationPolicy:]):
     199        (-[WebCoreFrameLoaderAsDelegate continueAfterWillSubmitForm:]):
     200        (-[WebCoreFrameLoaderAsDelegate continueLoadRequestAfterNavigationPolicy:formState:]):
     201        (-[WebCoreFrameLoaderAsDelegate continueLoadRequestAfterNewWindowPolicy:frameName:formState:]):
     202        * loader/mac/WebLoader.h:
     203        (WebCore::WebResourceLoader::identifier):
     204        (WebCore::WebResourceLoader::reachedTerminalState):
     205        (WebCore::WebResourceLoader::cancelled):
     206        * loader/mac/WebLoader.mm:
     207        (WebCore::WebResourceLoader::WebResourceLoader):
     208        (WebCore::WebResourceLoader::releaseResources):
     209        (WebCore::WebResourceLoader::load):
     210        (WebCore::WebResourceLoader::frameLoader):
     211        (WebCore::WebResourceLoader::willSendRequest):
     212        (WebCore::WebResourceLoader::didReceiveAuthenticationChallenge):
     213        (WebCore::WebResourceLoader::didCancelAuthenticationChallenge):
     214        (WebCore::WebResourceLoader::didReceiveResponse):
     215        (WebCore::WebResourceLoader::didReceiveData):
     216        (WebCore::WebResourceLoader::didFinishLoading):
     217        (WebCore::WebResourceLoader::didFinishLoadingOnePart):
     218        (WebCore::WebResourceLoader::didFail):
     219        (WebCore::WebResourceLoader::willCacheResponse):
     220        (WebCore::WebResourceLoader::didCancel):
     221        (WebCore::WebResourceLoader::cancel):
     222        (WebCore::WebResourceLoader::cancelledError):
     223        (WebCore::WebResourceLoader::delegate):
     224        * loader/mac/WebMainResourceLoader.h:
     225        * loader/mac/WebMainResourceLoader.mm:
     226        (WebCore::MainResourceLoader::MainResourceLoader):
     227        (WebCore::MainResourceLoader::create):
     228        (WebCore::MainResourceLoader::receivedError):
     229        (WebCore::MainResourceLoader::didCancel):
     230        (WebCore::MainResourceLoader::interruptionForPolicyChangeError):
     231        (WebCore::MainResourceLoader::isPostOrRedirectAfterPost):
     232        (WebCore::MainResourceLoader::addData):
     233        (WebCore::MainResourceLoader::willSendRequest):
     234        (WebCore::MainResourceLoader::continueAfterContentPolicy):
     235        (WebCore::MainResourceLoader::didReceiveResponse):
     236        (WebCore::MainResourceLoader::didReceiveData):
     237        (WebCore::MainResourceLoader::didFinishLoading):
     238        (WebCore::MainResourceLoader::didFail):
     239        (WebCore::MainResourceLoader::loadNow):
     240        (WebCore::MainResourceLoader::policyDelegate):
     241        * loader/mac/WebNetscapePlugInStreamLoader.h:
     242        * loader/mac/WebNetscapePlugInStreamLoader.mm:
     243        (WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader):
     244        (WebCore::NetscapePlugInStreamLoader::create):
     245        (WebCore::NetscapePlugInStreamLoader::didReceiveResponse):
     246        (WebCore::NetscapePlugInStreamLoader::didFinishLoading):
     247        (WebCore::NetscapePlugInStreamLoader::didFail):
     248        (WebCore::NetscapePlugInStreamLoader::didCancel):
     249        * loader/mac/WebSubresourceLoader.h:
     250        * loader/mac/WebSubresourceLoader.mm:
     251        (-[WebCoreSubresourceHandle initWithLoader:]):
     252
    12532006-10-23  Geoffrey Garen  <ggaren@apple.com>
    2254
  • trunk/WebCore/WebCore.exp

    r17206 r17238  
    120120.objc_class_name_WebDashboardRegion
    121121.objc_class_name_WebDocumentLoader
    122 .objc_class_name_WebFrameLoader
    123122.objc_class_name_WebPolicyDecider
    124123.objc_class_name_WebScriptObject
     
    132131_WebCoreShouldUseFontSmoothing
    133132_WebCoreTextFloatWidth
    134 __Z21isBackForwardLoadType13FrameLoadType
    135133__ZN7WebCore10StringImplD1Ev
     134__ZN7WebCore11FrameLoader11stopLoadingEP7NSError
     135__ZN7WebCore11FrameLoader11stopLoadingEv
     136__ZN7WebCore11FrameLoader12shouldReloadEP5NSURLS2_
     137__ZN7WebCore11FrameLoader14detachChildrenEv
     138__ZN7WebCore11FrameLoader16detachFromParentEv
     139__ZN7WebCore11FrameLoader17actionInformationE13FrameLoadTypebP7NSEventP5NSURL
     140__ZN7WebCore11FrameLoader17actionInformationE14NavigationTypeP7NSEventP5NSURL
     141__ZN7WebCore11FrameLoader21addPlugInStreamLoaderEPNS_17WebResourceLoaderE
     142__ZN7WebCore11FrameLoader21commitProvisionalLoadEP12NSDictionary
     143__ZN7WebCore11FrameLoader22defersCallbacksChangedEv
     144__ZN7WebCore11FrameLoader23addExtraFieldsToRequestEP19NSMutableURLRequestbb
     145__ZN7WebCore11FrameLoader23reloadAllowingStaleDataEP8NSString
     146__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv
     147__ZN7WebCore11FrameLoader24removePlugInStreamLoaderEPNS_17WebResourceLoaderE
     148__ZN7WebCore11FrameLoader25provisionalDocumentLoaderEv
     149__ZN7WebCore11FrameLoader4loadEP12NSURLRequest
     150__ZN7WebCore11FrameLoader4loadEP12NSURLRequestP12NSDictionary13FrameLoadTypeN3WTF10PassRefPtrINS_9FormStateEEE
     151__ZN7WebCore11FrameLoader4loadEP12NSURLRequestP8NSString
     152__ZN7WebCore11FrameLoader4loadEP17WebDocumentLoader
     153__ZN7WebCore11FrameLoader4loadEP17WebDocumentLoader13FrameLoadTypeN3WTF10PassRefPtrINS_9FormStateEEE
     154__ZN7WebCore11FrameLoader4loadEP5NSURLP8NSString13FrameLoadTypeS4_P7NSEventP10DOMElementP12NSDictionary
     155__ZN7WebCore11FrameLoader6reloadEv
     156__ZN7WebCore11FrameLoader8safeLoadEP5NSURL
    136157__ZN7WebCore17WebResourceLoader14cancelledErrorEv
    137158__ZN7WebCore17WebResourceLoader20inConnectionCallbackEv
    138 __ZN7WebCore26NetscapePlugInStreamLoader6createEP14WebFrameLoaderP11objc_object
     159__ZN7WebCore21isBackForwardLoadTypeE13FrameLoadType
     160__ZN7WebCore26NetscapePlugInStreamLoader6createEPNS_5FrameEP11objc_object
     161__ZNK7WebCore11FrameLoader14documentLoaderEv
     162__ZNK7WebCore11FrameLoader15defersCallbacksEv
     163__ZNK7WebCore11FrameLoader15firstLayoutDoneEv
     164__ZNK7WebCore11FrameLoader20activeDocumentLoaderEv
     165__ZNK7WebCore11FrameLoader21isQuickRedirectComingEv
     166__ZNK7WebCore11FrameLoader6clientEv
     167__ZNK7WebCore11FrameLoader8loadTypeEv
    139168__ZNK7WebCore17WebResourceLoader11frameLoaderEv
    140169__ZNK7WebCore26NetscapePlugInStreamLoader6isDoneEv
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r17230 r17238  
    376376                65BF022F0974816300C43196 /* Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 65BF022A0974816300C43196 /* Frame.h */; settings = {ATTRIBUTES = (Private, ); }; };
    377377                65BF02300974816300C43196 /* FramePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 65BF022B0974816300C43196 /* FramePrivate.h */; };
    378                 65BF02440974819000C43196 /* FrameMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 65BF023B0974819000C43196 /* FrameMac.h */; };
     378                65BF02440974819000C43196 /* FrameMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 65BF023B0974819000C43196 /* FrameMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
    379379                65BF02450974819000C43196 /* FrameMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65BF023C0974819000C43196 /* FrameMac.mm */; };
    380380                65C7F4320979E2620022E453 /* WebCorePageBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C7F4310979E2620022E453 /* WebCorePageBridge.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    515515                85031B3C0A44EFC700F992E0 /* BeforeUnloadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B260A44EFC700F992E0 /* BeforeUnloadEvent.cpp */; };
    516516                85031B3D0A44EFC700F992E0 /* BeforeUnloadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B270A44EFC700F992E0 /* BeforeUnloadEvent.h */; };
    517                 85031B3E0A44EFC700F992E0 /* Clipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B280A44EFC700F992E0 /* Clipboard.h */; };
     517                85031B3E0A44EFC700F992E0 /* Clipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B280A44EFC700F992E0 /* Clipboard.h */; settings = {ATTRIBUTES = (Private, ); }; };
    518518                85031B3F0A44EFC700F992E0 /* ClipboardEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 85031B290A44EFC700F992E0 /* ClipboardEvent.cpp */; };
    519519                85031B400A44EFC700F992E0 /* ClipboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85031B2A0A44EFC700F992E0 /* ClipboardEvent.h */; };
     
    14001400                935C476309AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476209AC4CE600A6AAB4 /* MouseEventWithHitTestResults.h */; };
    14011401                935C476809AC4D4300A6AAB4 /* PlatformKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476609AC4D4300A6AAB4 /* PlatformKeyboardEvent.h */; };
    1402                 935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476709AC4D4300A6AAB4 /* PlatformMouseEvent.h */; };
     1402                935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476709AC4D4300A6AAB4 /* PlatformMouseEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
    14031403                935C476B09AC4D4F00A6AAB4 /* PlatformWheelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */; };
    14041404                935C476D09AC4D6300A6AAB4 /* FoundationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 935C476C09AC4D6300A6AAB4 /* FoundationExtras.h */; };
     
    15331533                93F199E008245E59001E9ABC /* Slider.h in Headers */ = {isa = PBXBuildFile; fileRef = BC86FB8D061F5C23006BB822 /* Slider.h */; };
    15341534                93F199E508245E59001E9ABC /* HTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F6A3D60663BF04004D2919 /* HTMLCanvasElement.h */; };
    1535                 93F199E708245E59001E9ABC /* ClipboardMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D90660B0665D937006B6F1A /* ClipboardMac.h */; };
     1535                93F199E708245E59001E9ABC /* ClipboardMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D90660B0665D937006B6F1A /* ClipboardMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
    15361536                93F199EC08245E59001E9ABC /* XSLStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06F24A06D18A7E004A6FA3 /* XSLStyleSheet.h */; };
    15371537                93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06F24C06D18A7E004A6FA3 /* XSLTProcessor.h */; };
     
    25312531                BC3FCAA90AC3DB5800BA54AD /* PlatformScrollBar.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3FCAA80AC3DB5800BA54AD /* PlatformScrollBar.h */; };
    25322532                BC6B7BAF0993603C0052867B /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6B7BAE0993603C0052867B /* Image.cpp */; };
    2533                 BC6B7ECF0998AC7F0052867B /* ImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6B7ECE0998AC7F0052867B /* ImageSource.h */; };
     2533                BC6B7ECF0998AC7F0052867B /* ImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6B7ECE0998AC7F0052867B /* ImageSource.h */; settings = {ATTRIBUTES = (Private, ); }; };
    25342534                BC6D6DD209AF906600F59759 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6D6DD009AF906600F59759 /* Font.cpp */; };
    25352535                BC6D6DD309AF906600F59759 /* Font.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6D6DD109AF906600F59759 /* Font.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    25422542                BC6DB4D40A1AFEEF00E5CD14 /* GlyphMapMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6DB4D30A1AFEEF00E5CD14 /* GlyphMapMac.cpp */; };
    25432543                BC73E25D0978682700EDFF8A /* FloatSize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC73E25B0978682700EDFF8A /* FloatSize.cpp */; };
    2544                 BC73E25E0978682700EDFF8A /* FloatSize.h in Headers */ = {isa = PBXBuildFile; fileRef = BC73E25C0978682700EDFF8A /* FloatSize.h */; };
     2544                BC73E25E0978682700EDFF8A /* FloatSize.h in Headers */ = {isa = PBXBuildFile; fileRef = BC73E25C0978682700EDFF8A /* FloatSize.h */; settings = {ATTRIBUTES = (Private, ); }; };
    25452545                BC73E3190978AFFC00EDFF8A /* IntPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = BC73E3180978AFFB00EDFF8A /* IntPoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
    25462546                BC73E3920978CED700EDFF8A /* FloatPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC73E3900978CED700EDFF8A /* FloatPoint.cpp */; };
     
    26042604                BCCD74DC0A4C8D35005FDA6D /* HTMLViewSourceDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCD74DB0A4C8D35005FDA6D /* HTMLViewSourceDocument.h */; };
    26052605                BCCD74E50A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCD74E40A4C8DDF005FDA6D /* HTMLViewSourceDocument.cpp */; };
    2606                 BCD75ABC0989A446003E28DF /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD75ABB0989A446003E28DF /* Image.h */; };
     2606                BCD75ABC0989A446003E28DF /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD75ABB0989A446003E28DF /* Image.h */; settings = {ATTRIBUTES = (Private, ); }; };
    26072607                BCEA478F097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEA477C097CAAC80094C9E4 /* CSSComputedStyleDeclaration.cpp */; };
    26082608                BCEA4790097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEA477D097CAAC80094C9E4 /* CSSComputedStyleDeclaration.h */; };
  • trunk/WebCore/bridge/mac/WebCoreFrameBridge.h

    r17236 r17238  
    3232
    3333namespace WebCore {
     34    class EditorClient;
     35    class Element;
     36    class FrameLoader;
    3437    class FrameMac;
    35     class Element;
    36     class EditorClient;
    3738}
    3839
    39 typedef WebCore::FrameMac WebCoreMacFrame;
     40typedef WebCore::EditorClient WebCoreEditorClient;
    4041typedef WebCore::Element WebCoreElement;
    41 typedef WebCore::EditorClient WebCoreEditorClient;
     42typedef WebCore::FrameLoader WebCoreFrameLoader;
     43typedef WebCore::FrameMac WebCoreFrameMac;
    4244
    4345#else
    4446
    4547@class NSMenu;
    46 @class WebCoreMacFrame;
     48@class WebCoreEditorClient;
    4749@class WebCoreElement;
    48 @class WebCoreEditorClient;
     50@class WebCoreFrameLoader;
     51@class WebCoreFrameMac;
    4952
    5053#endif
     
    6366@class WebCoreSettings;
    6467@class WebFrame;
    65 @class WebFrameLoader;
    6668@class WebScriptObject;
    6769@class WebView;
     
    187189@interface WebCoreFrameBridge : NSObject
    188190{
    189     WebCoreMacFrame *m_frame;
    190     WebFrameLoader *_frameLoader;
     191    WebCoreFrameMac* m_frame;
     192    WebCoreFrameLoader* m_frameLoader;
    191193
    192194    BOOL _shouldCreateRenderers;
     
    518520
    519521- (void)setFrameLoaderClient:(id<WebFrameLoaderClient>)client;
    520 - (WebFrameLoader *)frameLoader;
     522- (WebCoreFrameLoader *)frameLoader;
    521523
    522524- (void)setTitle:(NSString *)title;
     
    549551// The encoding is the standard form encoding for uploading files.
    550552
    551 @class WebFrameLoader;
    552 
    553553@protocol WebCoreFrameBridge
    554554
     
    715715
    716716@interface WebCoreFrameBridge (WebCoreInternalUse)
    717 - (WebCoreMacFrame*)impl;
     717- (WebCoreFrameMac*)impl;
    718718@end
    719719
  • trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm

    r17206 r17238  
    485485
    486486    m_frame = new FrameMac([page impl], 0, client);
     487    m_frameLoader = new FrameLoader(m_frame);
    487488    m_frame->setBridge(self);
    488489    _shouldCreateRenderers = YES;
     
    494495        initializedObjectCacheSize = true;
    495496    }
    496 
    497     _frameLoader = [[WebFrameLoader alloc] initWithFrameBridge:self];
    498497   
    499498    return self;
     
    506505   
    507506    m_frame = new FrameMac(ownerElement->document()->frame()->page(), ownerElement, client);
     507    m_frameLoader = new FrameLoader(m_frame);
    508508    m_frame->setBridge(self);
    509509    _shouldCreateRenderers = YES;
    510510
    511     _frameLoader = [[WebFrameLoader alloc] initWithFrameBridge:self];
    512 
    513511    return self;
    514512}
     
    527525{
    528526    ASSERT(_closed);
    529    
    530     [_frameLoader release];
    531     _frameLoader = nil;
    532    
    533527    [super dealloc];
    534528}
     
    544538    [self removeFromFrame];
    545539    [self clearFrame];
    546     [_frameLoader release];
    547     _frameLoader = nil;
    548540    _closed = YES;
    549541}
     
    758750{
    759751    m_frame = 0;
     752    delete m_frameLoader;
     753    m_frameLoader = 0;
    760754}
    761755
     
    26202614- (void)setFrameLoaderClient:(id<WebFrameLoaderClient>)client
    26212615{
    2622     [_frameLoader setFrameLoaderClient:client];
    2623 }
    2624 
    2625 - (WebFrameLoader *)frameLoader
    2626 {
    2627     return _frameLoader;
     2616    m_frameLoader->setFrameLoaderClient(client);
     2617}
     2618
     2619- (FrameLoader *)frameLoader
     2620{
     2621    return m_frameLoader;
    26282622}
    26292623
     
    26742668- (void)setTitle:(NSString *)title
    26752669{
    2676     [[[self frameLoader] documentLoader] setTitle:stringByCollapsingNonPrintingCharacters(title)];
     2670    if (!m_frame)
     2671        return;
     2672    [m_frameLoader->documentLoader() setTitle:stringByCollapsingNonPrintingCharacters(title)];
    26772673}
    26782674
    26792675- (void)didFirstLayout
    26802676{
    2681     [[self frameLoader] didFirstLayout];
     2677    if (!m_frame)
     2678        return;
     2679    m_frameLoader->didFirstLayout();
    26822680}
    26832681
    26842682- (void)notifyIconChanged:(NSURL*)iconURL
    26852683{
    2686     [[self frameLoader] _notifyIconChanged:iconURL];
     2684    if (!m_frame)
     2685        return;
     2686    m_frameLoader->notifyIconChanged(iconURL);
    26872687}
    26882688
    26892689- (NSURL*)originalRequestURL
    26902690{
    2691     return [[[[self frameLoader] activeDocumentLoader] initialRequest] URL];
     2691    return [[m_frameLoader->activeDocumentLoader() initialRequest] URL];
    26922692}
    26932693
    26942694- (BOOL)isLoadTypeReload
    26952695{
    2696     return [[self frameLoader] loadType] == FrameLoadTypeReload;
     2696    return m_frameLoader->loadType() == FrameLoadTypeReload;
    26972697}
    26982698
    26992699- (void)frameDetached
    27002700{
    2701     [[self frameLoader] stopLoading];
    2702     [[self frameLoader] detachFromParent];
     2701    m_frameLoader->stopLoading();
     2702    m_frameLoader->detachFromParent();
    27032703}
    27042704
    27052705- (void)tokenizerProcessedData
    27062706{
    2707     [[self frameLoader] checkLoadComplete];
     2707    m_frameLoader->checkLoadComplete();
    27082708}
    27092709
     
    27112711{
    27122712    // Set the encoding. This only needs to be done once, but it's harmless to do it again later.
    2713     NSString *encoding = [[[self frameLoader] documentLoader] overrideEncoding];
     2713    NSString *encoding = [m_frameLoader->documentLoader() overrideEncoding];
    27142714    BOOL userChosen = encoding != nil;
    27152715    if (encoding == nil) {
     
    27332733    [self canLoadURL:URL fromReferrer:[self referrer] hideReferrer:&hideReferrer];
    27342734   
    2735     return SubresourceLoader::create([self frameLoader], resourceLoader,
     2735    return SubresourceLoader::create(m_frame, resourceLoader,
    27362736        method, URL, customHeaders, hideReferrer ? nil : [self referrer]);
    27372737}
     
    27402740{
    27412741    // FIXME: If the WebKit client changes or cancels the request, WebCore does not respect this and continues the load.
     2742    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL];
    27422743    NSError *error;
    27432744    id identifier;
    2744     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL];
    2745     [[self frameLoader] requestFromDelegateForRequest:request identifier:&identifier error:&error];   
    2746     [[self frameLoader] sendRemainingDelegateMessagesWithIdentifier:identifier response:response length:[data length] error:error];
     2745    m_frameLoader->requestFromDelegate(request, identifier, error);   
     2746    m_frameLoader->sendRemainingDelegateMessages(identifier, response, [data length], error);
    27472747    [request release];
    27482748}
     
    27612761    [self canLoadURL:URL fromReferrer:[self referrer] hideReferrer:&hideReferrer];
    27622762   
    2763     return SubresourceLoader::create([self frameLoader], resourceLoader,
     2763    return SubresourceLoader::create(m_frame, resourceLoader,
    27642764        method, URL, customHeaders, postData, hideReferrer ? nil : [self referrer]);
    27652765}
     
    27672767- (void)reportClientRedirectToURL:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction
    27682768{
    2769     [[self frameLoader] clientRedirectedTo:URL delay:seconds fireDate:date lockHistory:lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction];
     2769    m_frameLoader->clientRedirected(URL, seconds, date, lockHistory, isJavaScriptFormAction);
    27702770}
    27712771
    27722772- (void)reportClientRedirectCancelled:(BOOL)cancelWithLoadInProgress
    27732773{
    2774     [[self frameLoader] clientRedirectCancelledOrFinished:cancelWithLoadInProgress];
     2774    m_frameLoader->clientRedirectCancelledOrFinished(cancelWithLoadInProgress);
    27752775}
    27762776
     
    27812781        return;
    27822782   
    2783     if ([target length] == 0) {
     2783    if ([target length] == 0)
    27842784        target = nil;
    2785     }
    27862785   
    27872786    WebCoreFrameBridge *targetFrame = [self findFrameNamed:target];
    2788     if (![self canTargetLoadInFrame:targetFrame]) {
    2789         return;
    2790     }
     2787    if (![self canTargetLoadInFrame:targetFrame])
     2788        return;
    27912789   
    27922790    FrameLoadType loadType;
    2793    
    27942791    if (reload)
    27952792        loadType = FrameLoadTypeReload;
     
    27982795    else
    27992796        loadType = FrameLoadTypeStandard;
    2800     [[self frameLoader] loadURL:URL referrer:(hideReferrer ? nil : referrer) loadType:loadType target:target triggeringEvent:event form:form formValues:values];
    2801    
    2802     if (targetFrame != nil && self != targetFrame) {
     2797    m_frameLoader->load(URL, (hideReferrer ? nil : referrer), loadType, target, event, form, values);
     2798   
     2799    if (targetFrame != nil && self != targetFrame)
    28032800        [targetFrame activateWindow];
    2804     }
    28052801}
    28062802
     
    28182814        return;
    28192815   
    2820     [[self frameLoader] postWithURL:URL referrer:(hideReferrer ? nil : referrer) target:target
    2821                                data:postData contentType:contentType
    2822                     triggeringEvent:event form:form formValues:values];
     2816    m_frameLoader->post(URL, (hideReferrer ? nil : referrer), target, postData, contentType, event, form, values);
    28232817   
    28242818    if (targetFrame != nil && self != targetFrame)
     
    28522846        [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    28532847    else
    2854         [request setCachePolicy:[[[[self frameLoader] documentLoader] request] cachePolicy]];
     2848        [request setCachePolicy:[[m_frameLoader->documentLoader() request] cachePolicy]];
    28552849    if (!hideReferrer)
    28562850        setHTTPReferrer(request, [self referrer]);
    28572851   
    28582852    WebCorePageBridge *page = [self page];
    2859     [request setMainDocumentURL:[[[[[page mainFrame] frameLoader] documentLoader] request] URL]];
     2853    [request setMainDocumentURL:[[[[page mainFrame] frameLoader]->documentLoader() request] URL]];
    28602854    [request setValue:[self userAgentForURL:[request URL]] forHTTPHeaderField:@"User-Agent"];
    28612855   
    28622856    NSError *error = nil;
    28632857    id identifier = nil;   
    2864     NSURLRequest *newRequest = [[self frameLoader] requestFromDelegateForRequest:request identifier:&identifier error:&error];
     2858    NSURLRequest *newRequest = m_frameLoader->requestFromDelegate(request, identifier, error);
    28652859   
    28662860    NSURLResponse *response = nil;
     
    28912885    }
    28922886   
    2893     [[self frameLoader] sendRemainingDelegateMessagesWithIdentifier:identifier response:response length:[result length] error:error];
     2887    m_frameLoader->sendRemainingDelegateMessages(identifier, response, [result length], error);
    28942888    [request release];
    28952889   
     
    29002894- (NSString *)incomingReferrer
    29012895{
    2902     return [[[[self frameLoader] documentLoader] request] valueForHTTPHeaderField:@"Referer"];
     2896    return [[m_frameLoader->documentLoader() request] valueForHTTPHeaderField:@"Referer"];
    29032897}
    29042898
    29052899- (BOOL)isReloading
    29062900{
    2907     return [[[[self frameLoader] documentLoader] request] cachePolicy] == NSURLRequestReloadIgnoringCacheData;
     2901    return [[m_frameLoader->documentLoader() request] cachePolicy] == NSURLRequestReloadIgnoringCacheData;
    29082902}
    29092903
    29102904- (void)handledOnloadEvents
    29112905{
    2912     [[[self frameLoader] client] _dispatchDidHandleOnloadEventsForFrame];
     2906    [m_frameLoader->client() _dispatchDidHandleOnloadEventsForFrame];
    29132907}
    29142908
    29152909- (NSURLResponse*)mainResourceURLResponse
    29162910{
    2917     return [[[self frameLoader] documentLoader] response];
     2911    return [m_frameLoader->documentLoader() response];
    29182912}
    29192913
     
    29222916    NSURL *url = [[NSURL alloc] initWithString:@""];
    29232917    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    2924     [[self frameLoader] loadRequest:request];
     2918    m_frameLoader->load(request);
    29252919    [request release];
    29262920    [url release];
  • trunk/WebCore/loader/mac/WebDocumentLoader.h

    r16967 r17238  
    2929#import <Cocoa/Cocoa.h>
    3030
    31 @class WebFrameLoader;
     31namespace WebCore {
     32    class Frame;
     33    class FrameLoader;
     34}
    3235
    3336@interface WebDocumentLoader : NSObject
    3437{
    3538@public
    36     WebFrameLoader *frameLoader;
     39    WebCore::Frame* m_frame;
    3740   
    3841    NSData *mainResourceData;
     
    8992
    9093- (id)initWithRequest:(NSURLRequest *)request;
    91 - (void)setFrameLoader:(WebFrameLoader *)fl;
    92 - (WebFrameLoader *)frameLoader;
     94- (void)setFrame:(WebCore::Frame*)frame;
     95- (WebCore::FrameLoader*)frameLoader;
    9396- (void)setMainResourceData:(NSData *)data;
    9497- (NSData *)mainResourceData;
     
    119122- (void)mainReceivedError:(NSError *)error complete:(BOOL)isComplete;
    120123- (void)setResponse:(NSURLResponse *)resp;
    121 - (void)detachFromFrameLoader;
     124- (void)attachToFrame;
     125- (void)detachFromFrame;
    122126- (void)prepareForLoadStart;
    123127- (double)loadingStartedTime;
  • trunk/WebCore/loader/mac/WebDocumentLoader.mm

    r16999 r17238  
    3030#import "WebDocumentLoader.h"
    3131
    32 #import <wtf/Assertions.h>
    33 #import "WebFrameLoader.h"
    34 #import "WebDataProtocol.h"
     32#import "FrameMac.h"
    3533#import "WebCoreFrameBridge.h"
    3634#import "WebCoreSystemInterface.h"
     35#import "WebDataProtocol.h"
     36#import "WebFrameLoader.h"
     37#import <wtf/Assertions.h>
     38
     39using namespace WebCore;
    3740
    3841@implementation WebDocumentLoader
     
    5255}
    5356
     57- (FrameLoader*)frameLoader
     58{
     59    if (!m_frame)
     60        return 0;
     61    return [Mac(m_frame)->bridge() frameLoader];
     62}
     63
    5464- (void)dealloc
    5565{
    56     ASSERT([frameLoader activeDocumentLoader] != self || ![frameLoader isLoading]);
    57    
     66    ASSERT(!m_frame || [self frameLoader]->activeDocumentLoader() != self || ![self frameLoader]->isLoading());
    5867
    5968    [mainResourceData release];
     
    7281
    7382
    74 - (void)setFrameLoader:(WebFrameLoader *)fl
    75 {
    76     ASSERT(fl);
    77     ASSERT(!frameLoader);
    78    
    79     frameLoader = fl;
    80 }
    81 
    82 - (WebFrameLoader *)frameLoader
    83 {
    84     return frameLoader;
    85 }
    86 
    8783- (void)setMainResourceData:(NSData *)data
    8884{
     
    9490- (NSData *)mainResourceData
    9591{
    96     return mainResourceData != nil ? mainResourceData : [frameLoader mainResourceData];
     92    return mainResourceData != nil ? mainResourceData : [self frameLoader]->mainResourceData();
    9793}
    9894
     
    175171    // Also, don't send it when replacing unreachable URLs with alternate content.
    176172    if (!handlingUnreachableURL && ![[oldRequest URL] isEqual:[req URL]])
    177         [frameLoader didReceiveServerRedirectForProvisionalLoadForFrame];
     173        [self frameLoader]->didReceiveServerRedirectForProvisionalLoadForFrame();
    178174   
    179175    [oldRequest release];
     
    194190- (WebCoreFrameBridge *)bridge
    195191{
    196     return [frameLoader bridge];
     192    if (!m_frame)
     193        return nil;
     194    return Mac(m_frame)->bridge();
    197195}
    198196
     
    203201    mainDocumentError = error;
    204202   
    205     [frameLoader documentLoader:self setMainDocumentError:error];
     203    [self frameLoader]->setMainDocumentError(self, error);
    206204 }
    207205
     
    219217- (void)mainReceivedError:(NSError *)error complete:(BOOL)isComplete
    220218{
    221     if (!frameLoader)
     219    if (![self frameLoader])
    222220        return;
    223221   
    224222    [self setMainDocumentError:error];
    225223   
    226     if (isComplete) {
    227         [frameLoader documentLoader:self mainReceivedCompleteError:error];
    228     }
     224    if (isComplete)
     225        [self frameLoader]->mainReceivedCompleteError(self, error);
    229226}
    230227
     
    243240        return;
    244241   
     242    RefPtr<Frame> protect(m_frame);
    245243    [self retain];
    246    
     244
    247245    stopping = YES;
    248    
    249     if ([frameLoader isLoadingMainResource]) {
     246
     247    FrameLoader* frameLoader = [self frameLoader];
     248   
     249    if (frameLoader->isLoadingMainResource())
    250250        // Stop the main resource loader and let it send the cancelled message.
    251         [frameLoader cancelMainResourceLoad];
    252     } else if ([frameLoader isLoadingSubresources]) {
     251        frameLoader->cancelMainResourceLoad();
     252    else if (frameLoader->isLoadingSubresources())
    253253        // The main resource loader already finished loading. Set the cancelled error on the
    254254        // document and let the subresourceLoaders send individual cancelled messages below.
    255         [self setMainDocumentError:[frameLoader cancelledErrorWithRequest:request]];
    256     } else {
     255        [self setMainDocumentError:frameLoader->cancelledError(request)];
     256    else
    257257        // If there are no resource loaders, we need to manufacture a cancelled message.
    258258        // (A back/forward navigation has no resource loaders because its resources are cached.)
    259         [self mainReceivedError:[frameLoader cancelledErrorWithRequest:request] complete:YES];
    260     }
    261    
    262     [frameLoader stopLoadingSubresources];
    263     [frameLoader stopLoadingPlugIns];
     259        [self mainReceivedError:frameLoader->cancelledError(request) complete:YES];
     260   
     261    frameLoader->stopLoadingSubresources();
     262    frameLoader->stopLoadingPlugIns();
    264263   
    265264    stopping = NO;
     
    270269- (void)setupForReplace
    271270{
    272     [frameLoader setupForReplace];
     271    [self frameLoader]->setupForReplace();
    273272    committed = NO;
    274273}
     
    278277    if (gotFirstByte && !committed) {
    279278        committed = YES;
    280         [frameLoader commitProvisionalLoad:nil];
     279        [self frameLoader]->commitProvisionalLoad(nil);
    281280    }
    282281}
     
    286285    gotFirstByte = YES;   
    287286    [self commitIfReady];
    288     [frameLoader finishedLoadingDocument:self];
     287    [self frameLoader]->finishedLoadingDocument(self);
    289288    [[self bridge] end];
    290289}
     
    317316    [self commitIfReady];
    318317   
    319     [frameLoader committedLoadWithDocumentLoader:self data:data];
     318    if (FrameLoader* frameLoader = [self frameLoader])
     319        frameLoader->committedLoad(self, data);
    320320
    321321    [self release];
     
    324324- (BOOL)doesProgressiveLoadWithMIMEType:(NSString *)MIMEType
    325325{
    326     return ![frameLoader isReplacing] || [MIMEType isEqualToString:@"text/html"];
     326    return ![self frameLoader]->isReplacing() || [MIMEType isEqualToString:@"text/html"];
    327327}
    328328
     
    343343   
    344344    if (![self doesProgressiveLoadWithMIMEType:oldMIMEType]) {
    345         [frameLoader revertToProvisionalWithDocumentLoader:self];
     345        [self frameLoader]->revertToProvisional(self);
    346346        [self setupForReplace];
    347347        [self commitLoadWithData:[self mainResourceData]];
    348348    }
    349349   
    350     [frameLoader finishedLoadingDocument:self];
     350    [self frameLoader]->finishedLoadingDocument(self);
    351351    [[self bridge] end];
    352352   
    353     [frameLoader setReplacing];
     353    [self frameLoader]->setReplacing();
    354354    gotFirstByte = NO;
    355355   
    356356    if ([self doesProgressiveLoadWithMIMEType:newMIMEType]) {
    357         [frameLoader revertToProvisionalWithDocumentLoader:self];
     357        [self frameLoader]->revertToProvisional(self);
    358358        [self setupForReplace];
    359359    }
    360360   
    361     [frameLoader stopLoadingSubresources];
    362     [frameLoader stopLoadingPlugIns];
    363 
    364     [frameLoader finalSetupForReplaceWithDocumentLoader:self];
     361    [self frameLoader]->stopLoadingSubresources();
     362    [self frameLoader]->stopLoadingPlugIns();
     363
     364    [self frameLoader]->finalSetupForReplace(self);
    365365}
    366366
    367367- (void)updateLoading
    368368{
    369     ASSERT(self == [frameLoader activeDocumentLoader]);
    370    
    371     [self setLoading:[frameLoader isLoading]];
     369    ASSERT(self == [self frameLoader]->activeDocumentLoader());
     370   
     371    [self setLoading:[self frameLoader]->isLoading()];
    372372}
    373373
     
    377377}
    378378
    379 - (void)detachFromFrameLoader
    380 {
    381     frameLoader = nil;
     379- (void)setFrame:(Frame*)frame
     380{
     381    if (m_frame == frame)
     382        return;
     383    ASSERT(frame && !m_frame);
     384    m_frame = frame;
     385    [self attachToFrame];
     386}
     387
     388- (void)attachToFrame
     389{
     390    ASSERT(m_frame);
     391}
     392
     393- (void)detachFromFrame
     394{
     395    ASSERT(m_frame);
     396    m_frame = 0;
    382397}
    383398
     
    386401    ASSERT(!stopping);
    387402    [self setPrimaryLoadComplete:NO];
    388     ASSERT(frameLoader != nil);
     403    ASSERT([self frameLoader]);
    389404    [self clearErrors];
    390405   
     
    394409    [self setLoading:YES];
    395410   
    396     [frameLoader prepareForLoadStart];
     411    [self frameLoader]->prepareForLoadStart();
    397412}
    398413
     
    417432   
    418433    if (flag) {
    419         if ([frameLoader isLoadingMainResource]) {
    420             [self setMainResourceData:[frameLoader mainResourceData]];
    421             [frameLoader releaseMainResourceLoader];
     434        if ([self frameLoader]->isLoadingMainResource()) {
     435            [self setMainResourceData:[self frameLoader]->mainResourceData()];
     436            [self frameLoader]->releaseMainResourceLoader();
    422437        }
    423438       
     
    430445    // Once a frame has loaded, we no longer need to consider subresources,
    431446    // but we still need to consider subframes.
    432     if ([frameLoader state] != WebFrameStateComplete) {
     447    if ([self frameLoader]->state() != WebFrameStateComplete) {
    433448        if (!primaryLoadComplete && [self isLoading])
    434449            return YES;
    435         if ([frameLoader isLoadingSubresources])
     450        if ([self frameLoader]->isLoadingSubresources())
    436451            return YES;
    437         if (![[frameLoader bridge] doneProcessingData])
     452        if (![[self bridge] doneProcessingData])
    438453            return YES;
    439454    }
    440455   
    441     return [frameLoader subframeIsLoading];
     456    return [self frameLoader]->subframeIsLoading();
    442457}
    443458
     
    513528
    514529    if ([trimmed length] != 0 && ![pageTitle isEqualToString:trimmed]) {
    515         [frameLoader willChangeTitleForDocument:self];
     530        [self frameLoader]->willChangeTitle(self);
    516531        [pageTitle release];
    517532        pageTitle = [trimmed copy];
    518         [frameLoader didChangeTitleForDocument:self];
     533        [self frameLoader]->didChangeTitle(self);
    519534    }
    520535
  • trunk/WebCore/loader/mac/WebFrameLoader.h

    r17206 r17238  
    2828
    2929#import "FrameLoaderTypes.h"
    30 #import <Cocoa/Cocoa.h>
     30#import "RetainPtr.h"
    3131#import <wtf/Forward.h>
    3232#import <wtf/HashSet.h>
     33#import <wtf/Noncopyable.h>
    3334#import <wtf/RefPtr.h>
    34 #import <wtf/Vector.h>
     35
     36@class DOMElement;
     37@class WebCoreFrameBridge;
     38@class WebCoreFrameLoaderAsDelegate;
     39@class WebDocumentLoader;
     40@class WebPolicyDecider;
     41@protocol WebFrameLoaderClient;
    3542
    3643namespace WebCore {
     44
    3745    class FormState;
     46    class Frame;
    3847    class MainResourceLoader;
    3948    class WebResourceLoader;
     49
     50    bool isBackForwardLoadType(FrameLoadType);
     51
     52    class FrameLoader : Noncopyable {
     53    public:
     54        FrameLoader(Frame*);
     55        ~FrameLoader();
     56
     57        Frame* frame() const { return m_frame; }
     58
     59        void addPlugInStreamLoader(WebResourceLoader*);
     60        void removePlugInStreamLoader(WebResourceLoader*);
     61        void stopLoadingPlugIns();
     62        bool isLoadingMainResource() const;
     63        bool isLoadingSubresources() const;
     64        bool isLoading() const;
     65        void stopLoadingSubresources();
     66        void addSubresourceLoader(WebResourceLoader*);
     67        void removeSubresourceLoader(WebResourceLoader*);
     68        NSData *mainResourceData() const;
     69        void releaseMainResourceLoader();
     70        void cancelMainResourceLoad();
     71        void stopLoading(NSError *);
     72        void stopLoading();
     73
     74        WebDocumentLoader *activeDocumentLoader() const;
     75        WebDocumentLoader *documentLoader() const;
     76        WebDocumentLoader *provisionalDocumentLoader();
     77        WebFrameState state() const;
     78        void setupForReplace();
     79        static double timeOfLastCompletedLoad();
     80
     81        bool defersCallbacks() const;
     82        void defersCallbacksChanged();
     83        id identifierForInitialRequest(NSURLRequest *);
     84        NSURLRequest *willSendRequest(WebResourceLoader*, NSMutableURLRequest *, NSURLResponse *redirectResponse);
     85        void didReceiveAuthenticationChallenge(WebResourceLoader*, NSURLAuthenticationChallenge *);
     86        void didCancelAuthenticationChallenge(WebResourceLoader*, NSURLAuthenticationChallenge *);
     87        void didReceiveResponse(WebResourceLoader*, NSURLResponse *);
     88        void didReceiveData(WebResourceLoader*, NSData *, int lengthReceived);
     89        void didFinishLoad(WebResourceLoader*);
     90        void didFailToLoad(WebResourceLoader*, NSError *);
     91        bool privateBrowsingEnabled() const;
     92        NSURLRequest *originalRequest() const;
     93        void receivedMainResourceError(NSError *, bool isComplete);
     94        NSURLRequest *initialRequest() const;
     95        void receivedData(NSData *);
     96        void setRequest(NSURLRequest *);
     97        void download(NSURLConnection *, NSURLRequest *request, NSURLResponse *, id proxy);
     98        void handleFallbackContent();
     99        bool isStopping() const;
     100        void setupForReplaceByMIMEType(NSString *newMIMEType);
     101        void setResponse(NSURLResponse *);
     102
     103        void finishedLoading();
     104        NSURL *URL() const;
     105
     106        NSError *cancelledError(NSURLRequest *) const;
     107        NSError *fileDoesNotExistError(NSURLResponse *) const;
     108        bool willUseArchive(WebResourceLoader*, NSURLRequest *, NSURL *) const;
     109        bool isArchiveLoadPending(WebResourceLoader*) const;
     110        void cancelPendingArchiveLoad(WebResourceLoader*);
     111        void cannotShowMIMEType(NSURLResponse *);
     112        NSError *interruptionForPolicyChangeError(NSURLRequest *);
     113        bool isHostedByObjectElement() const;
     114        bool isLoadingMainFrame() const;
     115        bool canShowMIMEType(NSString *MIMEType) const;
     116        bool representationExistsForURLScheme(NSString *URLScheme);
     117        NSString *generatedMIMETypeForURLScheme(NSString *URLScheme);
     118        void notifyIconChanged(NSURL *iconURL);
     119        void checkNavigationPolicy(NSURLRequest *newRequest, id continuationObject, SEL continuationSelector);
     120        void checkContentPolicy(NSString *MIMEType, id continuationObject, SEL continuationSelector);
     121        void cancelContentPolicyCheck();
     122        void reload();
     123        void reloadAllowingStaleData(NSString *overrideEncoding);
     124        void load(NSURLRequest *, NSDictionary *triggeringAaction, FrameLoadType, PassRefPtr<FormState>);
     125
     126        void didReceiveServerRedirectForProvisionalLoadForFrame();
     127        void finishedLoadingDocument(WebDocumentLoader *);
     128        void committedLoad(WebDocumentLoader *, NSData *data);
     129        bool isReplacing() const;
     130        void setReplacing();
     131        void revertToProvisional(WebDocumentLoader *);
     132        void setMainDocumentError(WebDocumentLoader *, NSError *);
     133        void mainReceivedCompleteError(WebDocumentLoader *, NSError *);
     134        void finalSetupForReplace(WebDocumentLoader *);
     135        void prepareForLoadStart();
     136        bool subframeIsLoading() const;
     137        void willChangeTitle(WebDocumentLoader *);
     138        void didChangeTitle(WebDocumentLoader *);
     139
     140        FrameLoadType loadType() const;
     141
     142        void load(WebDocumentLoader *);
     143        void load(WebDocumentLoader *, FrameLoadType, PassRefPtr<FormState>);
     144
     145        void didFirstLayout();
     146        bool firstLayoutDone() const;
     147
     148        void clientRedirectCancelledOrFinished(bool cancelWithLoadInProgress);
     149        void clientRedirected(NSURL *, double delay, NSDate *fireDate, bool lockHistory, bool isJavaScriptFormAction);
     150        void load(NSURL *, NSString *referrer, FrameLoadType loadType, NSString *target, NSEvent *event, DOMElement *form, NSDictionary *formValues);
     151        void commitProvisionalLoad(NSDictionary *pageCache);
     152        bool isQuickRedirectComing() const;
     153        bool shouldReload(NSURL *currentURL, NSURL *destinationURL);
     154
     155        void sendRemainingDelegateMessages(id identifier, NSURLResponse *, unsigned length, NSError *);
     156        NSURLRequest *requestFromDelegate(NSURLRequest *, id& identifier, NSError *& error);
     157        void load(NSURLRequest *);
     158        void load(NSURLRequest *, NSString *frameName);
     159        void post(NSURL *, NSString *referrer, NSString *target, NSArray *postData, NSString *contentType, NSEvent *, DOMElement *form, NSDictionary *formValues);
     160
     161        void checkLoadComplete();
     162        void detachFromParent();
     163        void safeLoad(NSURL *);
     164        void detachChildren();
     165        void addExtraFieldsToRequest(NSMutableURLRequest *, bool isMainResource, bool alwaysFromRequest);
     166        NSDictionary *actionInformation(NavigationType, NSEvent *, NSURL *);
     167        NSDictionary *actionInformation(FrameLoadType loadType, bool isFormSubmission, NSEvent *, NSURL *);
     168
     169        void setFrameLoaderClient(id <WebFrameLoaderClient>);
     170        id <WebFrameLoaderClient> client() const;
     171
     172        void continueAfterWillSubmitForm(WebPolicyAction);
     173        void continueAfterNewWindowPolicy(WebPolicyAction);
     174        void continueAfterNavigationPolicy(WebPolicyAction);
     175        void continueLoadRequestAfterNavigationPolicy(NSURLRequest *, FormState*);
     176        void continueFragmentScrollAfterNavigationPolicy(NSURLRequest *);
     177        void continueLoadRequestAfterNewWindowPolicy(NSURLRequest *, NSString *frameName, FormState*);
     178
     179    private:
     180        void setDefersCallbacks(bool);
     181        bool startLoadingMainResource(NSMutableURLRequest *, id identifier);
     182        void clearProvisionalLoad();
     183        void stopLoadingSubframes();
     184        void markLoadComplete();
     185        void commitProvisionalLoad();
     186        void startLoading();
     187        void provisionalLoadStarted();
     188        void frameLoadCompleted();
     189
     190        void mainReceivedError(NSError *, bool isComplete);
     191
     192        void setLoadType(FrameLoadType);
     193
     194        void invalidatePendingPolicyDecision(bool callDefaultAction);
     195        void checkNewWindowPolicy(NSURLRequest *, NSDictionary *, NSString *frameName, PassRefPtr<FormState>);
     196        void checkNavigationPolicy(NSURLRequest *, WebDocumentLoader *, PassRefPtr<FormState>, id continuationObject, SEL continuationSelector);
     197
     198        void transitionToCommitted(NSDictionary *pageCache);
     199        void checkLoadCompleteForThisFrame();
     200
     201        void setDocumentLoader(WebDocumentLoader *);
     202        void setPolicyDocumentLoader(WebDocumentLoader *);
     203        void setProvisionalDocumentLoader(WebDocumentLoader *);
     204
     205        bool isLoadingPlugIns() const;
     206
     207        void setState(WebFrameState);
     208
     209        WebCoreFrameBridge *bridge() const;
     210
     211        WebCoreFrameLoaderAsDelegate *asDelegate();
     212
     213        void closeOldDataSources();
     214        void opened();
     215
     216        void handleUnimplementablePolicy(NSError *);
     217        bool shouldReloadToHandleUnreachableURL(NSURLRequest *);
     218
     219        Frame* m_frame;
     220        RetainPtr<WebCoreFrameLoaderAsDelegate> m_asDelegate;
     221
     222        RefPtr<MainResourceLoader> m_mainResourceLoader;
     223        HashSet<RefPtr<WebResourceLoader> > m_subresourceLoaders;
     224        HashSet<RefPtr<WebResourceLoader> > m_plugInStreamLoaders;
     225   
     226        id <WebFrameLoaderClient> m_client;
     227
     228        RetainPtr<WebDocumentLoader> m_documentLoader;
     229        RetainPtr<WebDocumentLoader> m_provisionalDocumentLoader;
     230        RetainPtr<WebDocumentLoader> m_policyDocumentLoader;
     231
     232        WebFrameState m_state;
     233        FrameLoadType m_loadType;
     234
     235        // state we'll need to continue after waiting for the policy delegate's decision
     236        RetainPtr<WebPolicyDecider> m_policyDecider;   
     237
     238        RetainPtr<NSURLRequest> m_policyRequest;
     239        RetainPtr<NSString> m_policyFrameName;
     240        RetainPtr<id> m_policyTarget;
     241        SEL m_policySelector;
     242        RefPtr<FormState> m_policyFormState;
     243        FrameLoadType m_policyLoadType;
     244
     245        bool m_delegateIsHandlingProvisionalLoadError;
     246        bool m_delegateIsDecidingNavigationPolicy;
     247        bool m_delegateIsHandlingUnimplementablePolicy;
     248
     249        bool m_firstLayoutDone;
     250        bool m_quickRedirectComing;
     251        bool m_sentRedirectNotification;
     252        bool m_isStoppingLoad;   
     253    };
     254
    40255}
    41 
    42 @class DOMElement;
    43 @class WebDocumentLoader;
    44 @class WebCoreFrameBridge;
    45 @class WebPolicyDecider;
    46 @protocol WebFrameLoaderClient;
    47 
    48 bool isBackForwardLoadType(FrameLoadType);
    49 
    50 @interface WebFrameLoader : NSObject
    51 {
    52     WebCoreFrameBridge *frameBridge;
    53    
    54     WebCore::MainResourceLoader *m_mainResourceLoader;
    55    
    56     HashSet<RefPtr<WebCore::WebResourceLoader> >* m_subresourceLoaders;
    57     HashSet<RefPtr<WebCore::WebResourceLoader> >* m_plugInStreamLoaders;
    58    
    59     id <WebFrameLoaderClient> client;
    60     WebDocumentLoader *documentLoader;
    61     WebDocumentLoader *provisionalDocumentLoader;
    62     WebDocumentLoader *policyDocumentLoader;
    63        
    64     WebFrameState state;
    65    
    66     FrameLoadType loadType;
    67 
    68     // state we'll need to continue after waiting for the policy delegate's decision
    69     WebPolicyDecider *policyDecider;   
    70 
    71     NSURLRequest *policyRequest;
    72     NSString *policyFrameName;
    73     id policyTarget;
    74     SEL policySelector;
    75     WebCore::FormState *policyFormState;
    76     FrameLoadType policyLoadType;
    77 
    78     BOOL delegateIsHandlingProvisionalLoadError;
    79     BOOL delegateIsDecidingNavigationPolicy;
    80     BOOL delegateIsHandlingUnimplementablePolicy;
    81 
    82     BOOL firstLayoutDone;
    83     BOOL quickRedirectComing;
    84     BOOL sentRedirectNotification;
    85     BOOL isStoppingLoad;   
    86 }
    87 
    88 - (id)initWithFrameBridge:(WebCoreFrameBridge *)bridge;
    89 - (void)addPlugInStreamLoader:(WebCore::WebResourceLoader *)loader;
    90 - (void)removePlugInStreamLoader:(WebCore::WebResourceLoader *)loader;
    91 - (void)setDefersCallbacks:(BOOL)defers;
    92 - (void)stopLoadingPlugIns;
    93 - (BOOL)isLoadingMainResource;
    94 - (BOOL)isLoadingSubresources;
    95 - (BOOL)isLoading;
    96 - (void)stopLoadingSubresources;
    97 - (void)addSubresourceLoader:(WebCore::WebResourceLoader *)loader;
    98 - (void)removeSubresourceLoader:(WebCore::WebResourceLoader *)loader;
    99 - (NSData *)mainResourceData;
    100 - (void)releaseMainResourceLoader;
    101 - (void)cancelMainResourceLoad;
    102 - (BOOL)startLoadingMainResourceWithRequest:(NSMutableURLRequest *)request identifier:(id)identifier;
    103 - (void)stopLoadingWithError:(NSError *)error;
    104 - (void)clearProvisionalLoad;
    105 - (void)stopLoading;
    106 - (void)stopLoadingSubframes;
    107 - (void)markLoadComplete;
    108 - (void)commitProvisionalLoad;
    109 - (void)startLoading;
    110 - (void)startProvisionalLoad:(WebDocumentLoader *)loader;
    111 - (WebDocumentLoader *)activeDocumentLoader;
    112 - (WebDocumentLoader *)documentLoader;
    113 - (WebDocumentLoader *)provisionalDocumentLoader;
    114 - (WebFrameState)state;
    115 - (void)setupForReplace;
    116 + (CFAbsoluteTime)timeOfLastCompletedLoad;
    117 - (void)provisionalLoadStarted;
    118 - (void)frameLoadCompleted;
    119 
    120 - (BOOL)defersCallbacks;
    121 - (void)defersCallbacksChanged;
    122 - (id)_identifierForInitialRequest:(NSURLRequest *)clientRequest;
    123 - (NSURLRequest *)_willSendRequest:(NSMutableURLRequest *)clientRequest forResource:(id)identifier redirectResponse:(NSURLResponse *)redirectResponse;
    124 - (void)_didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier;
    125 - (void)_didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier;
    126 - (void)_didReceiveResponse:(NSURLResponse *)r forResource:(id)identifier;
    127 - (void)_didReceiveData:(NSData *)data contentLength:(int)lengthReceived forResource:(id)identifier;
    128 - (void)_didFinishLoadingForResource:(id)identifier;
    129 - (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier;
    130 - (BOOL)_privateBrowsingEnabled;
    131 - (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier;
    132 - (void)_finishedLoadingResource;
    133 - (void)_receivedError:(NSError *)error;
    134 - (NSURLRequest *)_originalRequest;
    135 - (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete;
    136 - (NSURLRequest *)initialRequest;
    137 - (void)_receivedData:(NSData *)data;
    138 - (void)_setRequest:(NSURLRequest *)request;
    139 - (void)_downloadWithLoadingConnection:(NSURLConnection *)connection request:(NSURLRequest *)request response:(NSURLResponse *)r proxy:(id)proxy;
    140 - (void)_handleFallbackContent;
    141 - (BOOL)_isStopping;
    142 - (void)_setupForReplaceByMIMEType:(NSString *)newMIMEType;
    143 - (void)_setResponse:(NSURLResponse *)response;
    144 - (void)_mainReceivedError:(NSError *)error complete:(BOOL)isComplete;
    145 - (void)_finishedLoading;
    146 - (NSURL *)_URL;
    147 
    148 - (NSError *)cancelledErrorWithRequest:(NSURLRequest *)request;
    149 - (NSError *)fileDoesNotExistErrorWithResponse:(NSURLResponse *)response;
    150 - (BOOL)willUseArchiveForRequest:(NSURLRequest *)request originalURL:(NSURL *)originalURL loader:(WebCore::WebResourceLoader *)loader;
    151 - (BOOL)archiveLoadPendingForLoader:(WebCore::WebResourceLoader *)loader;
    152 - (void)cancelPendingArchiveLoadForLoader:(WebCore::WebResourceLoader *)loader;
    153 - (void)cannotShowMIMETypeWithResponse:(NSURLResponse *)response;
    154 - (NSError *)interruptForPolicyChangeErrorWithRequest:(NSURLRequest *)request;
    155 - (BOOL)isHostedByObjectElement;
    156 - (BOOL)isLoadingMainFrame;
    157 - (BOOL)_canShowMIMEType:(NSString *)MIMEType;
    158 - (BOOL)_representationExistsForURLScheme:(NSString *)URLScheme;
    159 - (NSString *)_generatedMIMETypeForURLScheme:(NSString *)URLScheme;
    160 - (void)_notifyIconChanged:(NSURL *)iconURL;
    161 - (void)_checkNavigationPolicyForRequest:(NSURLRequest *)newRequest andCall:(id)obj withSelector:(SEL)sel;
    162 - (void)_checkContentPolicyForMIMEType:(NSString *)MIMEType andCall:(id)obj withSelector:(SEL)sel;
    163 - (void)cancelContentPolicy;
    164 - (void)reload;
    165 - (void)_reloadAllowingStaleDataWithOverrideEncoding:(NSString *)encoding;
    166 - (void)_loadRequest:(NSURLRequest *)request triggeringAction:(NSDictionary *)action loadType:(FrameLoadType)loadType formState:(PassRefPtr<WebCore::FormState>)formState;
    167 
    168 - (void)didReceiveServerRedirectForProvisionalLoadForFrame;
    169 - (WebCoreFrameBridge *)bridge;
    170 - (void)finishedLoadingDocument:(WebDocumentLoader *)loader;
    171 - (void)committedLoadWithDocumentLoader:(WebDocumentLoader *)loader data:(NSData *)data;
    172 - (BOOL)isReplacing;
    173 - (void)setReplacing;
    174 - (void)revertToProvisionalWithDocumentLoader:(WebDocumentLoader *)loader;
    175 - (void)documentLoader:(WebDocumentLoader *)loader setMainDocumentError:(NSError *)error;
    176 - (void)documentLoader:(WebDocumentLoader *)loader mainReceivedCompleteError:(NSError *)error;
    177 - (void)finalSetupForReplaceWithDocumentLoader:(WebDocumentLoader *)loader;
    178 - (void)prepareForLoadStart;
    179 - (BOOL)subframeIsLoading;
    180 - (void)willChangeTitleForDocument:(WebDocumentLoader *)loader;
    181 - (void)didChangeTitleForDocument:(WebDocumentLoader *)loader;
    182 
    183 - (FrameLoadType)loadType;
    184 - (void)setLoadType:(FrameLoadType)type;
    185 
    186 - (void)invalidatePendingPolicyDecisionCallingDefaultAction:(BOOL)call;
    187 - (void)checkNewWindowPolicyForRequest:(NSURLRequest *)request action:(NSDictionary *)action frameName:(NSString *)frameName formState:(PassRefPtr<WebCore::FormState>)formState andCall:(id)target withSelector:(SEL)selector;
    188 - (void)checkNavigationPolicyForRequest:(NSURLRequest *)request documentLoader:(WebDocumentLoader *)loader formState:(PassRefPtr<WebCore::FormState>)formState andCall:(id)target withSelector:(SEL)selector;
    189 - (void)continueAfterWillSubmitForm:(WebPolicyAction)policy;
    190 - (void)loadDocumentLoader:(WebDocumentLoader *)loader;
    191 - (void)loadDocumentLoader:(WebDocumentLoader *)loader withLoadType:(FrameLoadType)loadType formState:(PassRefPtr<WebCore::FormState>)formState;
    192 
    193 - (void)didFirstLayout;
    194 - (BOOL)firstLayoutDone;
    195 
    196 - (void)clientRedirectCancelledOrFinished:(BOOL)cancelWithLoadInProgress;
    197 - (void)clientRedirectedTo:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction;
    198 - (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer loadType:(FrameLoadType)loadType target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
    199 - (void)commitProvisionalLoad:(NSDictionary *)pageCache;
    200 - (BOOL)isQuickRedirectComing;
    201 - (BOOL)shouldReloadForCurrent:(NSURL *)currentURL andDestination:(NSURL *)destinationURL;
    202 
    203 - (void)transitionToCommitted:(NSDictionary *)pageCache;
    204 - (void)checkLoadCompleteForThisFrame;
    205 - (void)sendRemainingDelegateMessagesWithIdentifier:(id)identifier response:(NSURLResponse *)response length:(unsigned)length error:(NSError *)error;
    206 - (NSURLRequest *)requestFromDelegateForRequest:(NSURLRequest *)request identifier:(id *)identifier error:(NSError **)error;
    207 - (void)loadRequest:(NSURLRequest *)request;
    208 - (void)loadRequest:(NSURLRequest *)request inFrameNamed:(NSString *)frameName;
    209 - (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSArray *)postData contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
    210 
    211 - (void)checkLoadComplete;
    212 - (void)detachFromParent;
    213 - (void)safeLoadURL:(NSURL *)URL;
    214 - (void)defersCallbacksChanged;
    215 - (void)detachChildren;
    216 - (void)addExtraFieldsToRequest:(NSMutableURLRequest *)request mainResource:(BOOL)mainResource alwaysFromRequest:(BOOL)alwaysFromRequest;
    217 - (NSDictionary *)actionInformationForNavigationType:(NavigationType)navigationType event:(NSEvent *)event originalURL:(NSURL *)URL;
    218 - (NSDictionary *)actionInformationForLoadType:(FrameLoadType)loadType isFormSubmission:(BOOL)isFormSubmission event:(NSEvent *)event originalURL:(NSURL *)URL;
    219 
    220 - (void)setFrameLoaderClient:(id<WebFrameLoaderClient>)cli;
    221 - (id<WebFrameLoaderClient>)client;
    222    
    223 @end
  • trunk/WebCore/loader/mac/WebFrameLoader.mm

    r17206 r17238  
    3131
    3232#import "DOMElementInternal.h"
    33 #import "DOMHTMLObjectElement.h"
    3433#import "Element.h"
    3534#import "FrameMac.h"
     35#import "FrameTree.h"
     36#import "HTMLNames.h"
    3637#import "LoaderNSURLExtras.h"
    3738#import "LoaderNSURLRequestExtras.h"
     
    5152using namespace WebCore;
    5253
     54@interface WebCoreFrameLoaderAsDelegate : NSObject
     55{
     56    FrameLoader* m_loader;
     57}
     58- (id)initWithLoader:(FrameLoader*)loader;
     59- (void)detachFromLoader;
     60@end
     61
    5362namespace WebCore {
    5463
     64using namespace HTMLNames;
     65
    5566typedef HashSet<RefPtr<WebCore::WebResourceLoader> > ResourceLoaderSet;
    5667
    57 static void setDefersCallbacks(const ResourceLoaderSet* set, bool defers)
    58 {
    59     if (!set)
    60         return;
    61     const ResourceLoaderSet copy = *set;
    62     ResourceLoaderSet::const_iterator end = copy.end();
    63     for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it)
    64         (*it)->setDefersCallbacks(defers);
    65 }
    66 
    67 static void cancelAll(const ResourceLoaderSet* set)
    68 {
    69     if (!set)
    70         return;
    71     const ResourceLoaderSet copy = *set;
    72     ResourceLoaderSet::const_iterator end = copy.end();
    73     for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it)
    74         (*it)->cancel();
    75 }
    76 
    77 }
     68static double storedTimeOfLastCompletedLoad;
    7869
    7970static bool isCaseInsensitiveEqual(NSString *a, NSString *b)
     
    10192}
    10293
    103 @implementation WebFrameLoader
    104 
    105 - (id)initWithFrameBridge:(WebCoreFrameBridge *)bridge
    106 {
    107     self = [super init];
    108     if (self) {
    109         frameBridge = bridge;
    110         state = WebFrameStateCommittedPage;
    111     }
    112     return self;   
    113 }
    114 
    115 - (void)dealloc
    116 {
    117     // FIXME: Is there really a possiblity that any of these could be non-null?
    118     if (m_mainResourceLoader)
    119         m_mainResourceLoader->deref();
    120     delete m_subresourceLoaders;
    121     delete m_plugInStreamLoaders;
    122     [documentLoader release];
    123     [provisionalDocumentLoader release];
    124  
    125     ASSERT(!policyDocumentLoader);
    126     ASSERT(!policyFormState);
    127    
    128     [super dealloc];
    129 }
    130 
    131 - (void)finalize
    132 {
    133     if (m_mainResourceLoader)
    134         m_mainResourceLoader->deref();
    135     [super finalize];
    136 }
    137 
    138 - (WebDocumentLoader *)activeDocumentLoader
    139 {
    140     if (state == WebFrameStateProvisional)
    141         return provisionalDocumentLoader;
    142    
    143     return documentLoader;   
    144 }
    145 
    146 - (void)addPlugInStreamLoader:(WebResourceLoader *)loader
    147 {
    148     if (!m_plugInStreamLoaders)
    149         m_plugInStreamLoaders = new ResourceLoaderSet;
    150     m_plugInStreamLoaders->add(loader);
    151     [[self activeDocumentLoader] setLoading:YES];
    152 }
    153 
    154 - (void)removePlugInStreamLoader:(WebResourceLoader *)loader
    155 {
    156     ASSERT(m_plugInStreamLoaders);
    157     m_plugInStreamLoaders->remove(loader);
    158     [[self activeDocumentLoader] updateLoading];
    159 }
    160 
    161 - (void)defersCallbacksChanged
    162 {
    163     BOOL defers = [frameBridge defersLoading];
    164     for (WebCoreFrameBridge *frame = frameBridge; frame; frame = [frame traverseNextFrameStayWithin:frameBridge])
    165         [[frame frameLoader] setDefersCallbacks:defers];
    166 }
    167 
    168 - (BOOL)defersCallbacks
    169 {
    170     return [frameBridge defersLoading];
    171 }
    172 
    173 - (void)setDefersCallbacks:(BOOL)defers
     94FrameLoader::FrameLoader(Frame* frame)
     95    : m_frame(frame)
     96    , m_client(nil)
     97    , m_state(WebFrameStateCommittedPage)
     98    , m_loadType(FrameLoadTypeStandard)
     99    , m_delegateIsHandlingProvisionalLoadError(false)
     100    , m_delegateIsDecidingNavigationPolicy(false)
     101    , m_delegateIsHandlingUnimplementablePolicy(false)
     102    , m_firstLayoutDone(false)
     103    , m_quickRedirectComing(false)
     104    , m_sentRedirectNotification(false)
     105    , m_isStoppingLoad(false)
     106{
     107}
     108
     109FrameLoader::~FrameLoader()
     110{
     111    [m_asDelegate.get() detachFromLoader];
     112}
     113
     114WebDocumentLoader *FrameLoader::activeDocumentLoader() const
     115{
     116    if (m_state == WebFrameStateProvisional)
     117        return m_provisionalDocumentLoader.get();
     118    return m_documentLoader.get();
     119}
     120
     121void FrameLoader::addPlugInStreamLoader(WebResourceLoader* loader)
     122{
     123    m_plugInStreamLoaders.add(loader);
     124    [activeDocumentLoader() setLoading:YES];
     125}
     126
     127void FrameLoader::removePlugInStreamLoader(WebResourceLoader* loader)
     128{
     129    m_plugInStreamLoaders.remove(loader);
     130    [activeDocumentLoader() updateLoading];
     131}
     132
     133void FrameLoader::defersCallbacksChanged()
     134{
     135    bool defers = defersCallbacks();
     136    for (Frame* child = m_frame; child; child = child->tree()->traverseNext(m_frame))
     137        [Mac(child)->bridge() frameLoader]->setDefersCallbacks(defers);
     138}
     139
     140bool FrameLoader::defersCallbacks() const
     141{
     142    return [bridge() defersLoading];
     143}
     144
     145static void setAllDefersCallbacks(const ResourceLoaderSet& loaders, bool defers)
     146{
     147    const ResourceLoaderSet copy = loaders;
     148    ResourceLoaderSet::const_iterator end = copy.end();
     149    for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it)
     150        (*it)->setDefersCallbacks(defers);
     151}
     152
     153void FrameLoader::setDefersCallbacks(bool defers)
    174154{
    175155    if (m_mainResourceLoader)
    176156        m_mainResourceLoader->setDefersCallbacks(defers);
    177     setDefersCallbacks(m_subresourceLoaders, defers);
    178     setDefersCallbacks(m_plugInStreamLoaders, defers);
    179     [client _setDefersCallbacks:defers];
    180 }
    181 
    182 - (void)stopLoadingPlugIns
     157    setAllDefersCallbacks(m_subresourceLoaders, defers);
     158    setAllDefersCallbacks(m_plugInStreamLoaders, defers);
     159    [m_client _setDefersCallbacks:defers];
     160}
     161
     162static void cancelAll(const ResourceLoaderSet& loaders)
     163{
     164    const ResourceLoaderSet copy = loaders;
     165    ResourceLoaderSet::const_iterator end = copy.end();
     166    for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it)
     167        (*it)->cancel();
     168}
     169
     170void FrameLoader::stopLoadingPlugIns()
    183171{
    184172    cancelAll(m_plugInStreamLoaders);
    185173}
    186174
    187 - (BOOL)isLoadingMainResource
    188 {
    189     return m_mainResourceLoader != 0;
    190 }
    191 
    192 - (BOOL)isLoadingSubresources
    193 {
    194     return m_subresourceLoaders && !m_subresourceLoaders->isEmpty();
    195 }
    196 
    197 - (BOOL)isLoadingPlugIns
    198 {
    199     return m_plugInStreamLoaders && !m_plugInStreamLoaders->isEmpty();
    200 }
    201 
    202 - (BOOL)isLoading
    203 {
    204     return [self isLoadingMainResource] || [self isLoadingSubresources] || [self isLoadingPlugIns];
    205 }
    206 
    207 - (void)stopLoadingSubresources
     175bool FrameLoader::isLoadingMainResource() const
     176{
     177    return m_mainResourceLoader;
     178}
     179
     180bool FrameLoader::isLoadingSubresources() const
     181{
     182    return !m_subresourceLoaders.isEmpty();
     183}
     184
     185bool FrameLoader::isLoadingPlugIns() const
     186{
     187    return !m_plugInStreamLoaders.isEmpty();
     188}
     189
     190bool FrameLoader::isLoading() const
     191{
     192    return isLoadingMainResource() || isLoadingSubresources() || isLoadingPlugIns();
     193}
     194
     195void FrameLoader::stopLoadingSubresources()
    208196{
    209197    cancelAll(m_subresourceLoaders);
    210198}
    211199
    212 - (void)addSubresourceLoader:(WebResourceLoader *)loader
    213 {
    214     ASSERT(!provisionalDocumentLoader);
    215     if (!m_subresourceLoaders)
    216         m_subresourceLoaders = new ResourceLoaderSet;
    217     m_subresourceLoaders->add(loader);
    218     [[self activeDocumentLoader] setLoading:YES];
    219 }
    220 
    221 - (void)removeSubresourceLoader:(WebResourceLoader *)loader
    222 {
    223     ASSERT(m_subresourceLoaders);
    224     m_subresourceLoaders->remove(loader);
    225     [[self activeDocumentLoader] updateLoading];
    226 }
    227 
    228 - (NSData *)mainResourceData
     200void FrameLoader::addSubresourceLoader(WebResourceLoader* loader)
     201{
     202    ASSERT(!m_provisionalDocumentLoader);
     203    m_subresourceLoaders.add(loader);
     204    [activeDocumentLoader() setLoading:YES];
     205}
     206
     207void FrameLoader::removeSubresourceLoader(WebResourceLoader* loader)
     208{
     209    m_subresourceLoaders.remove(loader);
     210    [activeDocumentLoader() updateLoading];
     211    checkLoadComplete();
     212}
     213
     214NSData *FrameLoader::mainResourceData() const
    229215{
    230216    if (!m_mainResourceLoader)
     
    233219}
    234220
    235 - (void)releaseMainResourceLoader
    236 {
    237     if (!m_mainResourceLoader)
    238         return;
    239     m_mainResourceLoader->deref();
     221void FrameLoader::releaseMainResourceLoader()
     222{
    240223    m_mainResourceLoader = 0;
    241224}
    242225
    243 - (void)cancelMainResourceLoad
     226void FrameLoader::cancelMainResourceLoad()
    244227{
    245228    if (m_mainResourceLoader)
     
    247230}
    248231
    249 - (BOOL)startLoadingMainResourceWithRequest:(NSMutableURLRequest *)request identifier:(id)identifier
     232bool FrameLoader::startLoadingMainResource(NSMutableURLRequest *request, id identifier)
    250233{
    251234    ASSERT(!m_mainResourceLoader);
    252     m_mainResourceLoader = MainResourceLoader::create(self).release();
    253    
     235    m_mainResourceLoader = MainResourceLoader::create(m_frame);
    254236    m_mainResourceLoader->setIdentifier(identifier);
    255     [self addExtraFieldsToRequest:request mainResource:YES alwaysFromRequest:NO];
     237    addExtraFieldsToRequest(request, true, false);
    256238    if (!m_mainResourceLoader->load(request)) {
    257         // FIXME: if this should really be caught, we should just ASSERT this doesn't happen;
     239        // FIXME: If this should really be caught, we should just ASSERT this doesn't happen;
    258240        // should it be caught by other parts of WebKit or other parts of the app?
    259241        LOG_ERROR("could not create WebResourceHandle for URL %@ -- should be caught by policy handler level", [request URL]);
    260         m_mainResourceLoader->deref();
    261242        m_mainResourceLoader = 0;
    262         return NO;
    263     }
    264    
    265     return YES;
    266 }
    267 
    268 - (void)stopLoadingWithError:(NSError *)error
     243        return false;
     244    }
     245    return true;
     246}
     247
     248void FrameLoader::stopLoading(NSError *error)
    269249{
    270250    m_mainResourceLoader->cancel(error);
    271251}
    272252
    273 - (void)setDocumentLoader:(WebDocumentLoader *)loader
    274 {
    275     if (loader == nil && documentLoader == nil)
    276         return;
    277    
    278     ASSERT(loader != documentLoader);
    279    
    280     [client _prepareForDataSourceReplacement];
    281     [documentLoader detachFromFrameLoader];
    282    
     253void FrameLoader::setDocumentLoader(WebDocumentLoader* loader)
     254{
     255    if (!loader && !m_documentLoader)
     256        return;
     257   
     258    ASSERT(loader != m_documentLoader);
     259    ASSERT(!loader || [loader frameLoader] == this);
     260
     261    [m_client _prepareForDataSourceReplacement];
     262    [m_documentLoader.get() detachFromFrame];
     263
     264    m_documentLoader = loader;
     265}
     266
     267WebDocumentLoader *FrameLoader::documentLoader() const
     268{
     269    return m_documentLoader.get();
     270}
     271
     272void FrameLoader::setPolicyDocumentLoader(WebDocumentLoader *loader)
     273{
     274    if (m_policyDocumentLoader == loader)
     275        return;
     276
     277    ASSERT(m_frame);
     278    [loader setFrame:m_frame];
     279    if (m_policyDocumentLoader != m_provisionalDocumentLoader && m_policyDocumentLoader != m_documentLoader)
     280        [m_policyDocumentLoader.get() detachFromFrame];
     281
     282    m_policyDocumentLoader = loader;
     283}
     284   
     285WebDocumentLoader* FrameLoader::provisionalDocumentLoader()
     286{
     287    return m_provisionalDocumentLoader.get();
     288}
     289
     290void FrameLoader::setProvisionalDocumentLoader(WebDocumentLoader *loader)
     291{
     292    ASSERT(!loader || !m_provisionalDocumentLoader);
     293    ASSERT(!loader || [loader frameLoader] == this);
     294
     295    if (m_provisionalDocumentLoader != m_documentLoader)
     296        [m_provisionalDocumentLoader.get() detachFromFrame];
     297
     298    m_provisionalDocumentLoader = loader;
     299}
     300
     301WebFrameState FrameLoader::state() const
     302{
     303    return m_state;
     304}
     305
     306double FrameLoader::timeOfLastCompletedLoad()
     307{
     308    return storedTimeOfLastCompletedLoad;
     309}
     310
     311void FrameLoader::provisionalLoadStarted()
     312{
     313    m_firstLayoutDone = false;
     314    [bridge() provisionalLoadStarted];
     315    [m_client _provisionalLoadStarted];
     316}
     317
     318void FrameLoader::setState(WebFrameState newState)
     319{   
     320    m_state = newState;
     321   
     322    if (newState == WebFrameStateProvisional)
     323        provisionalLoadStarted();
     324    else if (newState == WebFrameStateComplete) {
     325        frameLoadCompleted();
     326        storedTimeOfLastCompletedLoad = CFAbsoluteTimeGetCurrent();
     327        [documentLoader() stopRecordingResponses];
     328    }
     329}
     330
     331void FrameLoader::clearProvisionalLoad()
     332{
     333    setProvisionalDocumentLoader(nil);
     334    [m_client _progressCompleted];
     335    setState(WebFrameStateComplete);
     336}
     337
     338void FrameLoader::markLoadComplete()
     339{
     340    setState(WebFrameStateComplete);
     341}
     342
     343void FrameLoader::commitProvisionalLoad()
     344{
     345    stopLoadingSubresources();
     346    stopLoadingPlugIns();
     347
     348    setDocumentLoader(m_provisionalDocumentLoader.get());
     349    setProvisionalDocumentLoader(nil);
     350    setState(WebFrameStateCommittedPage);
     351}
     352
     353void FrameLoader::stopLoadingSubframes()
     354{
     355    for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->nextSibling())
     356        [Mac(child)->bridge() frameLoader]->stopLoading();
     357}
     358
     359void FrameLoader::stopLoading()
     360{
     361    // If this method is called from within this method, infinite recursion can occur (3442218). Avoid this.
     362    if (m_isStoppingLoad)
     363        return;
     364
     365    m_isStoppingLoad = true;
     366
     367    invalidatePendingPolicyDecision(true);
     368
     369    stopLoadingSubframes();
     370    [m_provisionalDocumentLoader.get() stopLoading];
     371    [m_documentLoader.get() stopLoading];
     372    setProvisionalDocumentLoader(nil);
     373    [m_client _clearArchivedResources];
     374
     375    m_isStoppingLoad = false;   
     376}
     377
     378// FIXME: Poor method name; also, why is this not part of startProvisionalLoad:?
     379void FrameLoader::startLoading()
     380{
     381    [m_provisionalDocumentLoader.get() prepareForLoadStart];
     382
     383    if (isLoadingMainResource())
     384        return;
     385
     386    [m_client _clearLoadingFromPageCacheForDocumentLoader:m_provisionalDocumentLoader.get()];
     387
     388    id identifier = [m_client _dispatchIdentifierForInitialRequest:[m_provisionalDocumentLoader.get() originalRequest]
     389        fromDocumentLoader:m_provisionalDocumentLoader.get()];
     390       
     391    if (!startLoadingMainResource([m_provisionalDocumentLoader.get() actualRequest], identifier))
     392        [m_provisionalDocumentLoader.get() updateLoading];
     393}
     394
     395void FrameLoader::setupForReplace()
     396{
     397    setState(WebFrameStateProvisional);
     398    m_provisionalDocumentLoader = m_documentLoader;
     399    m_documentLoader = nil;
     400    detachChildren();
     401}
     402
     403id FrameLoader::identifierForInitialRequest(NSURLRequest *clientRequest)
     404{
     405    return [m_client _dispatchIdentifierForInitialRequest:clientRequest fromDocumentLoader:activeDocumentLoader()];
     406}
     407
     408NSURLRequest *FrameLoader::willSendRequest(WebResourceLoader* loader, NSMutableURLRequest *clientRequest, NSURLResponse *redirectResponse)
     409{
     410    [clientRequest setValue:[bridge() userAgentForURL:[clientRequest URL]] forHTTPHeaderField:@"User-Agent"];
     411    return [m_client _dispatchResource:loader->identifier() willSendRequest:clientRequest
     412        redirectResponse:redirectResponse fromDocumentLoader:activeDocumentLoader()];
     413}
     414
     415void FrameLoader::didReceiveAuthenticationChallenge(WebResourceLoader* loader, NSURLAuthenticationChallenge *currentWebChallenge)
     416{
     417    [m_client _dispatchDidReceiveAuthenticationChallenge:currentWebChallenge
     418        forResource:loader->identifier() fromDocumentLoader:activeDocumentLoader()];
     419}
     420
     421void FrameLoader::didCancelAuthenticationChallenge(WebResourceLoader* loader, NSURLAuthenticationChallenge *currentWebChallenge)
     422{
     423    [m_client _dispatchDidCancelAuthenticationChallenge:currentWebChallenge
     424        forResource:loader->identifier() fromDocumentLoader:activeDocumentLoader()];
     425}
     426
     427void FrameLoader::didReceiveResponse(WebResourceLoader* loader, NSURLResponse *r)
     428{
     429    [activeDocumentLoader() addResponse:r];
     430   
     431    [m_client _incrementProgressForIdentifier:loader->identifier() response:r];
     432    [m_client _dispatchResource:loader->identifier() didReceiveResponse:r fromDocumentLoader:activeDocumentLoader()];
     433}
     434
     435void FrameLoader::didReceiveData(WebResourceLoader* loader, NSData *data, int lengthReceived)
     436{
     437    [m_client _incrementProgressForIdentifier:loader->identifier() data:data];
     438    [m_client _dispatchResource:loader->identifier() didReceiveContentLength:lengthReceived fromDocumentLoader:activeDocumentLoader()];
     439}
     440
     441void FrameLoader::didFinishLoad(WebResourceLoader* loader)
     442{   
     443    [m_client _completeProgressForIdentifier:loader->identifier()];
     444    [m_client _dispatchResource:loader->identifier() didFinishLoadingFromDocumentLoader:activeDocumentLoader()];
     445}
     446
     447void FrameLoader::didFailToLoad(WebResourceLoader* loader, NSError *error)
     448{
     449    [m_client _completeProgressForIdentifier:loader->identifier()];
     450    if (error)
     451        [m_client _dispatchResource:loader->identifier() didFailLoadingWithError:error fromDocumentLoader:activeDocumentLoader()];
     452}
     453
     454bool FrameLoader::privateBrowsingEnabled() const
     455{
     456    return [m_client _privateBrowsingEnabled];
     457}
     458
     459NSURLRequest *FrameLoader::originalRequest() const
     460{
     461    return [activeDocumentLoader() originalRequestCopy];
     462}
     463
     464void FrameLoader::receivedMainResourceError(NSError *error, bool isComplete)
     465{
     466    WebDocumentLoader *loader = activeDocumentLoader();
    283467    [loader retain];
    284     [documentLoader release];
    285     documentLoader = loader;
    286 }
    287 
    288 - (WebDocumentLoader *)documentLoader
    289 {
    290     return documentLoader;
    291 }
    292 
    293 - (void)setPolicyDocumentLoader:(WebDocumentLoader *)loader
    294 {
    295     if (policyDocumentLoader == loader)
    296         return;
    297 
    298     if (policyDocumentLoader != provisionalDocumentLoader && policyDocumentLoader != documentLoader)
    299         [policyDocumentLoader detachFromFrameLoader];
    300 
    301     [policyDocumentLoader release];
    302     [loader retain];
    303     policyDocumentLoader = loader;
    304 }
    305    
    306 - (WebDocumentLoader *)provisionalDocumentLoader
    307 {
    308     return provisionalDocumentLoader;
    309 }
    310 
    311 - (void)setProvisionalDocumentLoader:(WebDocumentLoader *)loader
    312 {
    313     ASSERT(!loader || !provisionalDocumentLoader);
    314 
    315     if (provisionalDocumentLoader != documentLoader)
    316         [provisionalDocumentLoader detachFromFrameLoader];
    317 
    318     [loader retain];
    319     [provisionalDocumentLoader release];
    320     provisionalDocumentLoader = loader;
    321 }
    322 
    323 - (WebFrameState)state
    324 {
    325     return state;
    326 }
    327 
    328 #if !LOG_DISABLED
    329 static const char * const stateNames[] = {
    330     "WebFrameStateProvisional",
    331     "WebFrameStateCommittedPage",
    332     "WebFrameStateComplete"
    333 };
    334 #endif
    335 
    336 static CFAbsoluteTime _timeOfLastCompletedLoad;
    337 
    338 + (CFAbsoluteTime)timeOfLastCompletedLoad
    339 {
    340     return _timeOfLastCompletedLoad;
    341 }
    342 
    343 - (void)provisionalLoadStarted
    344 {
    345     firstLayoutDone = NO;
    346     [frameBridge provisionalLoadStarted];
    347 
    348     [client _provisionalLoadStarted];
    349 }
    350 
    351 - (void)setState:(WebFrameState)newState
    352 {   
    353     state = newState;
    354    
    355     if (state == WebFrameStateProvisional)
    356         [self provisionalLoadStarted];
    357     else if (state == WebFrameStateComplete) {
    358         [self frameLoadCompleted];
    359         _timeOfLastCompletedLoad = CFAbsoluteTimeGetCurrent();
    360         [[self documentLoader] stopRecordingResponses];
    361     }
    362 }
    363 
    364 - (void)clearProvisionalLoad
    365 {
    366     [self setProvisionalDocumentLoader:nil];
    367     [client _progressCompleted];
    368     [self setState:WebFrameStateComplete];
    369 }
    370 
    371 - (void)markLoadComplete
    372 {
    373     [self setState:WebFrameStateComplete];
    374 }
    375 
    376 - (void)commitProvisionalLoad
    377 {
    378     [self stopLoadingSubresources];
    379     [self stopLoadingPlugIns];
    380 
    381     [self setDocumentLoader:provisionalDocumentLoader];
    382     [self setProvisionalDocumentLoader:nil];
    383     [self setState:WebFrameStateCommittedPage];
    384 }
    385 
    386 - (void)stopLoadingSubframes
    387 {
    388     for (WebCoreFrameBridge *child = [frameBridge firstChild]; child; child = [child nextSibling])
    389         [[child frameLoader] stopLoading];
    390 }
    391 
    392 - (void)stopLoading
    393 {
    394     // If this method is called from within this method, infinite recursion can occur (3442218). Avoid this.
    395     if (isStoppingLoad)
    396         return;
    397    
    398     isStoppingLoad = YES;
    399    
    400     [self invalidatePendingPolicyDecisionCallingDefaultAction:YES];
    401    
    402     [self stopLoadingSubframes];
    403     [provisionalDocumentLoader stopLoading];
    404     [documentLoader stopLoading];
    405     [self setProvisionalDocumentLoader:nil];
    406     [client _clearArchivedResources];
    407 
    408     isStoppingLoad = NO;   
    409 }
    410 
    411 // FIXME: poor method name; also why is this not part of startProvisionalLoad:?
    412 - (void)startLoading
    413 {
    414     [provisionalDocumentLoader prepareForLoadStart];
    415        
    416     if ([self isLoadingMainResource])
    417         return;
    418 
    419     [client _clearLoadingFromPageCacheForDocumentLoader:provisionalDocumentLoader];
    420 
    421     id identifier = [client _dispatchIdentifierForInitialRequest:[provisionalDocumentLoader originalRequest] fromDocumentLoader:provisionalDocumentLoader];
    422        
    423     if (![self startLoadingMainResourceWithRequest:[provisionalDocumentLoader actualRequest] identifier:identifier])
    424         [provisionalDocumentLoader updateLoading];
    425 }
    426 
    427 - (void)startProvisionalLoad:(WebDocumentLoader *)loader
    428 {
    429     [self setProvisionalDocumentLoader:loader];
    430     [self setState:WebFrameStateProvisional];
    431 }
    432 
    433 - (void)setupForReplace
    434 {
    435     [self setState:WebFrameStateProvisional];
    436     WebDocumentLoader *old = provisionalDocumentLoader;
    437     provisionalDocumentLoader = documentLoader;
    438     documentLoader = nil;
    439     [old release];
    440    
    441     [self detachChildren];
    442 }
    443 
    444 - (id)_identifierForInitialRequest:(NSURLRequest *)clientRequest
    445 {
    446     // FIXME: why retain here, but not in the other place this happens?
    447 
    448     // The identifier is released after the last callback, rather than in dealloc,
    449     // to avoid potential cycles.   
    450     return [[client _dispatchIdentifierForInitialRequest:clientRequest fromDocumentLoader:[self activeDocumentLoader]] retain];
    451 }
    452 
    453 - (NSURLRequest *)_willSendRequest:(NSMutableURLRequest *)clientRequest forResource:(id)identifier redirectResponse:(NSURLResponse *)redirectResponse
    454 {
    455     [clientRequest setValue:[frameBridge userAgentForURL:[clientRequest URL]] forHTTPHeaderField:@"User-Agent"];
    456     return [client _dispatchResource:identifier willSendRequest:clientRequest redirectResponse:redirectResponse fromDocumentLoader:[self activeDocumentLoader]];
    457 }
    458 
    459 - (void)_didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier
    460 {
    461     [client _dispatchDidReceiveAuthenticationChallenge:currentWebChallenge forResource:identifier fromDocumentLoader:[self activeDocumentLoader]];
    462 }
    463 
    464 - (void)_didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)currentWebChallenge forResource:(id)identifier
    465 {
    466     [client _dispatchDidCancelAuthenticationChallenge:currentWebChallenge forResource:identifier fromDocumentLoader:[self activeDocumentLoader]];
    467 }
    468 
    469 - (void)_didReceiveResponse:(NSURLResponse *)r forResource:(id)identifier
    470 {
    471     [[self activeDocumentLoader] addResponse:r];
    472    
    473     [client _incrementProgressForIdentifier:identifier response:r];
    474     [client _dispatchResource:identifier didReceiveResponse:r fromDocumentLoader:[self activeDocumentLoader]];
    475 }
    476 
    477 - (void)_didReceiveData:(NSData *)data contentLength:(int)lengthReceived forResource:(id)identifier
    478 {
    479     [client _incrementProgressForIdentifier:identifier data:data];
    480     [client _dispatchResource:identifier didReceiveContentLength:lengthReceived fromDocumentLoader:[self activeDocumentLoader]];
    481 }
    482 
    483 - (void)_didFinishLoadingForResource:(id)identifier
    484 {   
    485     [client _completeProgressForIdentifier:identifier];
    486     [client _dispatchResource:identifier didFinishLoadingFromDocumentLoader:[self activeDocumentLoader]];
    487 }
    488 
    489 - (void)_didFailLoadingWithError:(NSError *)error forResource:(id)identifier
    490 {
    491     [client _completeProgressForIdentifier:identifier];
    492     if (error)
    493         [client _dispatchResource:identifier didFailLoadingWithError:error fromDocumentLoader:[self activeDocumentLoader]];
    494 }
    495 
    496 - (BOOL)_privateBrowsingEnabled
    497 {
    498     return [client _privateBrowsingEnabled];
    499 }
    500 
    501 - (void)_finishedLoadingResource
    502 {
    503     [self checkLoadComplete];
    504 }
    505 
    506 - (void)_receivedError:(NSError *)error
    507 {
    508     [self checkLoadComplete];
    509 }
    510 
    511 - (NSURLRequest *)_originalRequest
    512 {
    513     return [[self activeDocumentLoader] originalRequestCopy];
    514 }
    515 
    516 - (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete
    517 {
    518     WebDocumentLoader *loader = [self activeDocumentLoader];
    519     [loader retain];
    520    
    521     WebCoreFrameBridge *bridge = frameBridge;
     468   
     469    WebCoreFrameBridge *bridge = FrameLoader::bridge();
    522470   
    523471    // Retain the bridge because the stop may release the last reference to it.
    524472    [bridge retain];
    525473 
    526     id<WebFrameLoaderClient> cli = [client retain];
     474    id<WebFrameLoaderClient> cli = [m_client retain];
    527475   
    528476    if (isComplete) {
    529477        // FIXME: Don't want to do this if an entirely new load is going, so should check
    530         // that both data sources on the frame are either self or nil.
     478        // that both data sources on the frame are either this or nil.
    531479        // Can't call _bridge because we might not have commited yet
    532480        [bridge stop];
     
    535483    }
    536484   
    537     if ([self state] == WebFrameStateProvisional) {
    538         NSURL *failedURL = [[provisionalDocumentLoader originalRequestCopy] URL];
     485    if (m_state == WebFrameStateProvisional) {
     486        NSURL *failedURL = [[m_provisionalDocumentLoader.get() originalRequestCopy] URL];
    539487        [bridge didNotOpenURL:failedURL];
    540         [client _invalidateCurrentItemPageCache];
     488        [m_client _invalidateCurrentItemPageCache];
    541489       
    542         // Call -_clientRedirectCancelledOrFinished: here so that the frame load delegate is notified that the redirect's
    543         // status has changed, if there was a redirect.  The frame load delegate may have saved some state about
    544         // the redirect in its -webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:.  Since we are definitely
     490        // Call clientRedirectCancelledOrFinished here so that the frame load delegate is notified that the redirect's
     491        // status has changed, if there was a redirect. The frame load delegate may have saved some state about
     492        // the redirect in its -webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:. Since we are definitely
    545493        // not going to use this provisional resource, as it was cancelled, notify the frame load delegate that the redirect
    546494        // has ended.
    547         if (sentRedirectNotification)
    548             [self clientRedirectCancelledOrFinished:NO];
     495        if (m_sentRedirectNotification)
     496            clientRedirectCancelledOrFinished(false);
    549497    }
    550498   
     
    557505}
    558506
    559 - (void)clientRedirectCancelledOrFinished:(BOOL)cancelWithLoadInProgress
     507void FrameLoader::clientRedirectCancelledOrFinished(bool cancelWithLoadInProgress)
    560508{
    561509    // Note that -webView:didCancelClientRedirectForFrame: is called on the frame load delegate even if
    562510    // the redirect succeeded.  We should either rename this API, or add a new method, like
    563511    // -webView:didFinishClientRedirectForFrame:
    564     [client _dispatchDidCancelClientRedirectForFrame];
     512    [m_client _dispatchDidCancelClientRedirectForFrame];
    565513
    566514    if (!cancelWithLoadInProgress)
    567         quickRedirectComing = NO;
    568    
    569     sentRedirectNotification = NO;
    570 }
    571 
    572 - (void)clientRedirectedTo:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction
    573 {
    574     [client _dispatchWillPerformClientRedirectToURL:URL delay:seconds fireDate:date];
     515        m_quickRedirectComing = false;
     516
     517    m_sentRedirectNotification = false;
     518}
     519
     520void FrameLoader::clientRedirected(NSURL *URL, double seconds, NSDate *date, bool lockHistory, bool isJavaScriptFormAction)
     521{
     522    [m_client _dispatchWillPerformClientRedirectToURL:URL delay:seconds fireDate:date];
    575523   
    576524    // Remember that we sent a redirect notification to the frame load delegate so that when we commit
    577525    // the next provisional load, we can send a corresponding -webView:didCancelClientRedirectForFrame:
    578     sentRedirectNotification = YES;
     526    m_sentRedirectNotification = true;
    579527   
    580528    // If a "quick" redirect comes in an, we set a special mode so we treat the next
    581     // load as part of the same navigation.
    582    
    583     if (!documentLoader || isJavaScriptFormAction) {
    584         // If we don't have a dataSource, we have no "original" load on which to base a redirect,
    585         // so we better just treat the redirect as a normal load.
    586         quickRedirectComing = NO;
    587     } else {
    588         quickRedirectComing = lockHistory;
    589     }
    590 }
    591 
    592 - (BOOL)shouldReloadForCurrent:(NSURL *)currentURL andDestination:(NSURL *)destinationURL
    593 {
    594     return !(([currentURL fragment] || [destinationURL fragment]) &&
    595              [urlByRemovingFragment(currentURL) isEqual:urlByRemovingFragment(destinationURL)]);
    596 }
    597 
    598 // main funnel for navigating via callback from WebCore (e.g., clicking a link, redirect)
    599 - (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer loadType:(FrameLoadType)_loadType target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values
    600 {
    601     BOOL isFormSubmission = (values != nil);
     529    // load as part of the same navigation. If we don't have a document loader, we have
     530    // no "original" load on which to base a redirect, so we treat the redirect as a normal load.
     531    m_quickRedirectComing = lockHistory && m_documentLoader && !isJavaScriptFormAction;
     532}
     533
     534bool FrameLoader::shouldReload(NSURL *currentURL, NSURL *destinationURL)
     535{
     536    return !(([currentURL fragment] || [destinationURL fragment])
     537        && [urlByRemovingFragment(currentURL) isEqual:urlByRemovingFragment(destinationURL)]);
     538}
     539
     540void FrameLoader::load(NSURL *URL, NSString *referrer, FrameLoadType newLoadType, NSString *target, NSEvent *event, DOMElement *form, NSDictionary *values)
     541{
     542    bool isFormSubmission = values != nil;
    602543   
    603544    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];
    604545    setHTTPReferrer(request, referrer);
    605     [self addExtraFieldsToRequest:request mainResource:YES alwaysFromRequest:(event != nil || isFormSubmission)];
    606     if (_loadType == FrameLoadTypeReload)
     546    addExtraFieldsToRequest(request, true, event || isFormSubmission);
     547    if (newLoadType == FrameLoadTypeReload)
    607548        [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    608    
    609     // I believe this is never called with LoadSame.  If it is, we probably want to set the cache
    610     // policy of LoadFromOrigin, but I didn't test that.
    611     ASSERT(_loadType != FrameLoadTypeSame);
    612    
    613     NSDictionary *action = [self actionInformationForLoadType:_loadType isFormSubmission:isFormSubmission event:event originalURL:URL];
     549
     550    ASSERT(newLoadType != FrameLoadTypeSame);
     551
     552    NSDictionary *action = actionInformation(newLoadType, isFormSubmission, event, URL);
    614553    RefPtr<FormState> formState;
    615554    if (form && values)
    616         formState = FormState::create(form, values, frameBridge);
    617    
    618     if (target != nil) {
    619         WebCoreFrameBridge *targetFrame = [frameBridge findFrameNamed:target];
    620         if (targetFrame != nil) {
    621             [[targetFrame frameLoader] loadURL:URL referrer:referrer loadType:_loadType target:nil triggeringEvent:event form:form formValues:values];
    622         } else {
    623             [self checkNewWindowPolicyForRequest:request
    624                                           action:action
    625                                        frameName:target
    626                                        formState:formState.release()
    627                                          andCall:self
    628                                     withSelector:@selector(continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
    629         }
     555        formState = FormState::create(form, values, bridge());
     556   
     557    if (target) {
     558        Frame* targetFrame = m_frame->tree()->find(target);
     559        if (targetFrame)
     560            [Mac(targetFrame)->bridge() frameLoader]->load(URL, referrer, newLoadType, nil, event, form, values);
     561        else
     562            checkNewWindowPolicy(request, action, target, formState.release());
    630563        [request release];
    631564        return;
    632565    }
    633    
    634     WebDocumentLoader *oldDocumentLoader = [documentLoader retain];
    635    
    636     BOOL sameURL = [client _shouldTreatURLAsSameAsCurrent:URL];
     566
     567    WebDocumentLoader *oldDocumentLoader = [m_documentLoader.get() retain];
     568
     569    bool sameURL = [m_client _shouldTreatURLAsSameAsCurrent:URL];
    637570   
    638571    // Make sure to do scroll to anchor processing even if the URL is
     
    640573    // work properly.
    641574    if (!isFormSubmission
    642         && _loadType != FrameLoadTypeReload
    643         && _loadType != FrameLoadTypeSame
    644         && ![self shouldReloadForCurrent:URL andDestination:[frameBridge URL]]
    645        
     575        && newLoadType != FrameLoadTypeReload
     576        && newLoadType != FrameLoadTypeSame
     577        && !shouldReload(URL, [bridge() URL])
    646578        // We don't want to just scroll if a link from within a
    647579        // frameset is trying to reload the frameset into _top.
    648         && ![frameBridge isFrameSet]) {
    649        
     580        && ![bridge() isFrameSet]) {
     581
    650582        // Just do anchor navigation within the existing content.
    651583       
     
    657589       
    658590        [oldDocumentLoader setTriggeringAction:action];
    659         [self invalidatePendingPolicyDecisionCallingDefaultAction:YES];
    660         [self checkNavigationPolicyForRequest:request
    661                                    documentLoader:oldDocumentLoader formState:formState.release()
    662                                       andCall:self withSelector:@selector(continueFragmentScrollAfterNavigationPolicy:formState:)];
     591        invalidatePendingPolicyDecision(true);
     592        checkNavigationPolicy(request, oldDocumentLoader, formState.release(),
     593            asDelegate(), @selector(continueFragmentScrollAfterNavigationPolicy:formState:));
    663594    } else {
    664595        // must grab this now, since this load may stop the previous load and clear this flag
    665         BOOL isRedirect = quickRedirectComing;
    666         [self _loadRequest:request triggeringAction:action loadType:_loadType formState:formState.release()];
     596        bool isRedirect = m_quickRedirectComing;
     597        load(request, action, newLoadType, formState.release());
    667598        if (isRedirect) {
    668             quickRedirectComing = NO;
    669             [provisionalDocumentLoader setIsClientRedirect:YES];
    670         } else if (sameURL) {
     599            m_quickRedirectComing = false;
     600            [m_provisionalDocumentLoader.get() setIsClientRedirect:YES];
     601        } else if (sameURL)
    671602            // Example of this case are sites that reload the same URL with a different cookie
    672603            // driving the generated content, or a master frame with links that drive a target
    673604            // frame, where the user has clicked on the same link repeatedly.
    674             [self setLoadType:FrameLoadTypeSame];
    675         }           
     605            m_loadType = FrameLoadTypeSame;
    676606    }
    677607   
     
    680610}
    681611
    682 -(void)continueFragmentScrollAfterNavigationPolicy:(NSURLRequest *)request formState:(FormState *)formState
     612void FrameLoader::continueFragmentScrollAfterNavigationPolicy(NSURLRequest *request)
    683613{
    684614    if (!request)
     
    687617    NSURL *URL = [request URL];
    688618   
    689     BOOL isRedirect = quickRedirectComing;
    690     quickRedirectComing = NO;
    691    
    692     [documentLoader replaceRequestURLForAnchorScrollWithURL:URL];
    693     if (!isRedirect && ![client _shouldTreatURLAsSameAsCurrent:URL]) {
     619    bool isRedirect = m_quickRedirectComing;
     620    m_quickRedirectComing = false;
     621   
     622    [m_documentLoader.get() replaceRequestURLForAnchorScrollWithURL:URL];
     623    if (!isRedirect && ![m_client _shouldTreatURLAsSameAsCurrent:URL]) {
    694624        // NB: must happen after _setURL, since we add based on the current request.
    695625        // Must also happen before we openURL and displace the scroll position, since
     
    703633        // but it's not an obvious case.
    704634
    705         [client _addHistoryItemForFragmentScroll];
    706     }
    707    
    708     [frameBridge scrollToAnchorWithURL:URL];
    709    
    710     if (!isRedirect) {
     635        [m_client _addHistoryItemForFragmentScroll];
     636    }
     637   
     638    [bridge() scrollToAnchorWithURL:URL];
     639   
     640    if (!isRedirect)
    711641        // This will clear previousItem from the rest of the frame tree tree that didn't
    712         // doing any loading.  We need to make a pass on this now, since for anchor nav
    713         // we'll not go through a real load and reach Completed state
    714         [self checkLoadComplete];
    715     }
     642        // doing any loading. We need to make a pass on this now, since for anchor nav
     643        // we'll not go through a real load and reach Completed state.
     644        checkLoadComplete();
    716645 
    717     [client _dispatchDidChangeLocationWithinPageForFrame];
    718     [client _didFinishLoad];
    719 }
    720 
    721 - (void)closeOldDataSources
    722 {
    723     // FIXME: is it important for this traversal to be postorder instead of preorder?
    724     // FIXME: add helpers for postorder traversal?
    725     for (WebCoreFrameBridge *child = [frameBridge firstChild]; child; child = [child nextSibling])
    726         [[child frameLoader] closeOldDataSources];
    727    
    728     if (documentLoader)
    729         [client _dispatchWillCloseFrame];
    730 
    731     [client _setMainFrameDocumentReady:NO]; // stop giving out the actual DOMDocument to observers
    732 }
    733 
    734 // Called after we send an openURL:... down to WebCore.
    735 - (void)opened
    736 {
    737     if ([self loadType] == FrameLoadTypeStandard && [documentLoader isClientRedirect])
    738         [client _updateHistoryAfterClientRedirect];
    739 
    740     if ([client _isDocumentLoaderLoadingFromPageCache:documentLoader]) {
     646    [m_client _dispatchDidChangeLocationWithinPageForFrame];
     647    [m_client _didFinishLoad];
     648}
     649
     650void FrameLoader::closeOldDataSources()
     651{
     652    // FIXME: Is it important for this traversal to be postorder instead of preorder?
     653    // If so, add helpers for postorder traversal, and use them. If not, then lets not
     654    // use a recursive algorithm here.
     655    for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->nextSibling())
     656        [Mac(child)->bridge() frameLoader]->closeOldDataSources();
     657   
     658    if (m_documentLoader)
     659        [m_client _dispatchWillCloseFrame];
     660
     661    [m_client _setMainFrameDocumentReady:NO]; // stop giving out the actual DOMDocument to observers
     662}
     663
     664void FrameLoader::opened()
     665{
     666    if (m_loadType == FrameLoadTypeStandard && [m_documentLoader.get() isClientRedirect])
     667        [m_client _updateHistoryAfterClientRedirect];
     668
     669    if ([m_client _isDocumentLoaderLoadingFromPageCache:m_documentLoader.get()]) {
    741670        // Force a layout to update view size and thereby update scrollbars.
    742         [client _forceLayout];
    743 
    744         NSArray *responses = [[self documentLoader] responses];
     671        [m_client _forceLayout];
     672
     673        NSArray *responses = [m_documentLoader.get() responses];
    745674        NSURLResponse *response;
    746675        int i, count = [responses count];
     
    751680            id identifier;
    752681            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[response URL]];
    753             [self requestFromDelegateForRequest:request identifier:&identifier error:&error];
    754             [self sendRemainingDelegateMessagesWithIdentifier:identifier response:response length:(unsigned)[response expectedContentLength] error:error];
     682            requestFromDelegate(request, identifier, error);
     683            sendRemainingDelegateMessages(identifier, response, (unsigned)[response expectedContentLength], error);
    755684            [request release];
    756685        }
    757686       
    758         [client _loadedFromPageCache];
    759 
    760         [[self documentLoader] setPrimaryLoadComplete:YES];
     687        [m_client _loadedFromPageCache];
     688
     689        [m_documentLoader.get() setPrimaryLoadComplete:YES];
    761690
    762691        // FIXME: Why only this frame and not parent frames?
    763         [self checkLoadCompleteForThisFrame];
    764     }
    765 }
    766 
    767 - (void)commitProvisionalLoad:(NSDictionary *)pageCache
    768 {
    769     bool reload = loadType == FrameLoadTypeReload || loadType == FrameLoadTypeReloadAllowingStaleData;
    770    
    771     WebDocumentLoader *pdl = [provisionalDocumentLoader retain];
     692        checkLoadCompleteForThisFrame();
     693    }
     694}
     695
     696void FrameLoader::commitProvisionalLoad(NSDictionary *pageCache)
     697{
     698    bool reload = m_loadType == FrameLoadTypeReload || m_loadType == FrameLoadTypeReloadAllowingStaleData;
     699   
     700    WebDocumentLoader *pdl = [m_provisionalDocumentLoader.get() retain];
    772701   
    773702    NSURLResponse *response = [pdl response];
     
    776705        ? [(NSHTTPURLResponse *)response allHeaderFields] : nil;
    777706   
    778     if (loadType != FrameLoadTypeReplace)
    779         [self closeOldDataSources];
     707    if (m_loadType != FrameLoadTypeReplace)
     708        closeOldDataSources();
    780709   
    781710    if (!pageCache)
    782         [client _makeRepresentationForDocumentLoader:pdl];
    783    
    784     [self transitionToCommitted:pageCache];
     711        [m_client _makeRepresentationForDocumentLoader:pdl];
     712   
     713    transitionToCommitted(pageCache);
    785714   
    786715    // Call -_clientRedirectCancelledOrFinished: here so that the frame load delegate is notified that the redirect's
     
    788717    // the redirect in its -webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:.  Since we are
    789718    // just about to commit a new page, there cannot possibly be a pending redirect at this point.
    790     if (sentRedirectNotification)
    791         [self clientRedirectCancelledOrFinished:NO];
     719    if (m_sentRedirectNotification)
     720        clientRedirectCancelledOrFinished(false);
    792721   
    793722    NSURL *baseURL = [[pdl request] _webDataRequestBaseURL];       
     
    797726        URL = [NSURL URLWithString:@"about:blank"];   
    798727   
    799     [frameBridge openURL:URL
    800                      reload:reload
    801                 contentType:[response MIMEType]
    802                     refresh:[headers objectForKey:@"Refresh"]
    803                lastModified:(pageCache ? nil : wkGetNSURLResponseLastModifiedDate(response))
    804                   pageCache:pageCache];
    805    
    806     [self opened];
     728    [bridge() openURL:URL
     729               reload:reload
     730          contentType:[response MIMEType]
     731              refresh:[headers objectForKey:@"Refresh"]
     732         lastModified:(pageCache ? nil : wkGetNSURLResponseLastModifiedDate(response))
     733            pageCache:pageCache];
     734   
     735    opened();
    807736   
    808737    [pdl release];
    809738}
    810739
    811 - (NSURLRequest *)initialRequest
    812 {
    813     return [[self activeDocumentLoader] initialRequest];
    814 }
    815 
    816 - (void)_receivedData:(NSData *)data
    817 {
    818     [[self activeDocumentLoader] receivedData:data];
    819 }
    820 
    821 - (void)_setRequest:(NSURLRequest *)request
    822 {
    823     [[self activeDocumentLoader] setRequest:request];
    824 }
    825 
    826 - (void)_downloadWithLoadingConnection:(NSURLConnection *)connection
    827     request:(NSURLRequest *)request response:(NSURLResponse *)response proxy:(id)proxy
    828 {
    829     [client _downloadWithLoadingConnection:connection request:request response:response proxy:proxy];
    830 }
    831 
    832 - (WebCoreFrameBridge *)bridge
    833 {
    834     return frameBridge;
    835 }
    836 
    837 - (void)_handleFallbackContent
    838 {
    839     [frameBridge handleFallbackContent];
    840 }
    841 
    842 - (BOOL)_isStopping
    843 {
    844     return [[self activeDocumentLoader] isStopping];
    845 }
    846 
    847 - (void)_setupForReplaceByMIMEType:(NSString *)newMIMEType
    848 {
    849     [[self activeDocumentLoader] setupForReplaceByMIMEType:newMIMEType];
    850 }
    851 
    852 - (void)_setResponse:(NSURLResponse *)response
    853 {
    854     [[self activeDocumentLoader] setResponse:response];
    855 }
    856 
    857 - (void)_mainReceivedError:(NSError *)error complete:(BOOL)isComplete
    858 {
    859     [[self activeDocumentLoader] mainReceivedError:error complete:isComplete];
    860 }
    861 
    862 - (void)_finishedLoading
    863 {
    864     WebDocumentLoader *dl = [self activeDocumentLoader];
    865    
    866     WebCoreFrameBridge *bridge = frameBridge;
     740NSURLRequest *FrameLoader::initialRequest() const
     741{
     742    return [activeDocumentLoader() initialRequest];
     743}
     744
     745void FrameLoader::receivedData(NSData *data)
     746{
     747    [activeDocumentLoader() receivedData:data];
     748}
     749
     750void FrameLoader::setRequest(NSURLRequest *request)
     751{
     752    [activeDocumentLoader() setRequest:request];
     753}
     754
     755void FrameLoader::download(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *response, id proxy)
     756{
     757    [m_client _downloadWithLoadingConnection:connection request:request response:response proxy:proxy];
     758}
     759
     760WebCoreFrameBridge *FrameLoader::bridge() const
     761{
     762    return Mac(m_frame)->bridge();
     763}
     764
     765void FrameLoader::handleFallbackContent()
     766{
     767    [bridge() handleFallbackContent];
     768}
     769
     770bool FrameLoader::isStopping() const
     771{
     772    return [activeDocumentLoader() isStopping];
     773}
     774
     775void FrameLoader::setupForReplaceByMIMEType(NSString *newMIMEType)
     776{
     777    [activeDocumentLoader() setupForReplaceByMIMEType:newMIMEType];
     778}
     779
     780void FrameLoader::setResponse(NSURLResponse *response)
     781{
     782    [activeDocumentLoader() setResponse:response];
     783}
     784
     785void FrameLoader::mainReceivedError(NSError *error, bool isComplete)
     786{
     787    [activeDocumentLoader() mainReceivedError:error complete:isComplete];
     788}
     789
     790void FrameLoader::finishedLoading()
     791{
     792    WebDocumentLoader *dl = activeDocumentLoader();
     793   
     794    WebCoreFrameBridge *bridge = FrameLoader::bridge();
    867795
    868796    [bridge retain];
     
    875803
    876804    [dl setPrimaryLoadComplete:YES];
    877     [client _dispatchDidLoadMainResourceForDocumentLoader:dl];
    878     [self checkLoadComplete];
     805    [m_client _dispatchDidLoadMainResourceForDocumentLoader:dl];
     806    checkLoadComplete();
    879807
    880808    [bridge release];
    881809}
    882810
    883 - (void)_notifyIconChanged:(NSURL *)iconURL
     811void FrameLoader::notifyIconChanged(NSURL *iconURL)
    884812{
    885813    ASSERT([[WebCoreIconDatabaseBridge sharedInstance] _isEnabled]);
    886814    NSImage *icon = [[WebCoreIconDatabaseBridge sharedInstance]
    887         iconForPageURL:urlOriginalDataAsString([[self activeDocumentLoader] URL])
     815        iconForPageURL:urlOriginalDataAsString([activeDocumentLoader() URL])
    888816        withSize:NSMakeSize(16, 16)];
    889     [client _dispatchDidReceiveIcon:icon];
    890 }
    891 
    892 - (NSURL *)_URL
    893 {
    894     return [[self activeDocumentLoader] URL];
    895 }
    896 
    897 - (NSError *)cancelledErrorWithRequest:(NSURLRequest *)request
    898 {
    899     return [client _cancelledErrorWithRequest:request];
    900 }
    901 
    902 - (NSError *)fileDoesNotExistErrorWithResponse:(NSURLResponse *)response
    903 {
    904     return [client _fileDoesNotExistErrorWithResponse:response];   
    905 }
    906 
    907 - (BOOL)willUseArchiveForRequest:(NSURLRequest *)request originalURL:(NSURL *)originalURL loader:(WebResourceLoader *)loader
    908 {
    909     return [client _willUseArchiveForRequest:request originalURL:originalURL loader:loader];
    910 }
    911 
    912 - (BOOL)archiveLoadPendingForLoader:(WebResourceLoader *)loader
    913 {
    914     return [client _archiveLoadPendingForLoader:loader];
    915 }
    916 
    917 - (void)cancelPendingArchiveLoadForLoader:(WebResourceLoader *)loader
    918 {
    919     [client _cancelPendingArchiveLoadForLoader:loader];
    920 }
    921 
    922 - (void)handleUnimplementablePolicyWithError:(NSError *)error
    923 {
    924     delegateIsHandlingUnimplementablePolicy = YES;
    925     [client _dispatchUnableToImplementPolicyWithError:error];
    926     delegateIsHandlingUnimplementablePolicy = NO;
    927 }
    928 
    929 - (void)cannotShowMIMETypeWithResponse:(NSURLResponse *)response
    930 {
    931     [self handleUnimplementablePolicyWithError:[client _cannotShowMIMETypeErrorWithResponse:response]];   
    932 }
    933 
    934 - (NSError *)interruptForPolicyChangeErrorWithRequest:(NSURLRequest *)request
    935 {
    936     return [client _interruptForPolicyChangeErrorWithRequest:request];
    937 }
    938 
    939 - (BOOL)isHostedByObjectElement
    940 {
    941     // Handle <object> fallback for error cases.           
    942     DOMHTMLElement *hostElement = [frameBridge frameElement];
    943     return hostElement && [hostElement isKindOfClass:[DOMHTMLObjectElement class]];
    944 }
    945 
    946 - (BOOL)isLoadingMainFrame
    947 {
    948     return [frameBridge isMainFrame];
    949 }
    950 
    951 - (BOOL)_canShowMIMEType:(NSString *)MIMEType
    952 {
    953     return [client _canShowMIMEType:MIMEType];
    954 }
    955 
    956 - (BOOL)_representationExistsForURLScheme:(NSString *)URLScheme
    957 {
    958     return [client _representationExistsForURLScheme:URLScheme];
    959 }
    960 
    961 - (NSString *)_generatedMIMETypeForURLScheme:(NSString *)URLScheme
    962 {
    963     return [client _generatedMIMETypeForURLScheme:URLScheme];
    964 }
    965 
    966 - (void)_checkNavigationPolicyForRequest:(NSURLRequest *)newRequest andCall:(id)obj withSelector:(SEL)sel
    967 {
    968     [self checkNavigationPolicyForRequest:newRequest
    969                            documentLoader:[self activeDocumentLoader]
    970                                 formState:nil
    971                                   andCall:obj
    972                              withSelector:sel];
    973 }
    974 
    975 - (void)_checkContentPolicyForMIMEType:(NSString *)MIMEType andCall:(id)obj withSelector:(SEL)sel
    976 {
    977     WebPolicyDecider *d = [client _createPolicyDeciderWithTarget:obj action:sel];
    978     policyDecider = d;
    979    
    980     [d retain];
    981 
    982     [client _dispatchDecidePolicyForMIMEType:MIMEType request:[[self activeDocumentLoader] request] decider:d];
    983 
     817    [m_client _dispatchDidReceiveIcon:icon];
     818}
     819
     820NSURL *FrameLoader::URL() const
     821{
     822    return [activeDocumentLoader() URL];
     823}
     824
     825NSError *FrameLoader::cancelledError(NSURLRequest *request) const
     826{
     827    return [m_client _cancelledErrorWithRequest:request];
     828}
     829
     830NSError *FrameLoader::fileDoesNotExistError(NSURLResponse *response) const
     831{
     832    return [m_client _fileDoesNotExistErrorWithResponse:response];   
     833}
     834
     835bool FrameLoader::willUseArchive(WebResourceLoader* loader, NSURLRequest *request, NSURL *originalURL) const
     836{
     837    return [m_client _willUseArchiveForRequest:request originalURL:originalURL loader:loader];
     838}
     839
     840bool FrameLoader::isArchiveLoadPending(WebResourceLoader* loader) const
     841{
     842    return [m_client _archiveLoadPendingForLoader:loader];
     843}
     844
     845void FrameLoader::cancelPendingArchiveLoad(WebResourceLoader* loader)
     846{
     847    [m_client _cancelPendingArchiveLoadForLoader:loader];
     848}
     849
     850void FrameLoader::handleUnimplementablePolicy(NSError *error)
     851{
     852    m_delegateIsHandlingUnimplementablePolicy = YES;
     853    [m_client _dispatchUnableToImplementPolicyWithError:error];
     854    m_delegateIsHandlingUnimplementablePolicy = NO;
     855}
     856
     857void FrameLoader::cannotShowMIMEType(NSURLResponse *response)
     858{
     859    handleUnimplementablePolicy([m_client _cannotShowMIMETypeErrorWithResponse:response]);
     860}
     861
     862NSError *FrameLoader::interruptionForPolicyChangeError(NSURLRequest *request)
     863{
     864    return [m_client _interruptForPolicyChangeErrorWithRequest:request];
     865}
     866
     867bool FrameLoader::isHostedByObjectElement() const
     868{
     869    Element* owner = m_frame->ownerElement();
     870    return owner && owner->hasTagName(objectTag);
     871}
     872
     873bool FrameLoader::isLoadingMainFrame() const
     874{
     875    return [bridge() isMainFrame];
     876}
     877
     878bool FrameLoader::canShowMIMEType(NSString *MIMEType) const
     879{
     880    return [m_client _canShowMIMEType:MIMEType];
     881}
     882
     883bool FrameLoader::representationExistsForURLScheme(NSString *URLScheme)
     884{
     885    return [m_client _representationExistsForURLScheme:URLScheme];
     886}
     887
     888NSString *FrameLoader::generatedMIMETypeForURLScheme(NSString *URLScheme)
     889{
     890    return [m_client _generatedMIMETypeForURLScheme:URLScheme];
     891}
     892
     893void FrameLoader::checkNavigationPolicy(NSURLRequest *newRequest, id obj, SEL sel)
     894{
     895    checkNavigationPolicy(newRequest, activeDocumentLoader(), 0, obj, sel);
     896}
     897
     898void FrameLoader::checkContentPolicy(NSString *MIMEType, id obj, SEL sel)
     899{
     900    WebPolicyDecider *d = [m_client _createPolicyDeciderWithTarget:obj action:sel];
     901    m_policyDecider = d;
     902    [m_client _dispatchDecidePolicyForMIMEType:MIMEType request:[activeDocumentLoader() request] decider:d];
    984903    [d release];
    985904}
    986905
    987 - (void)cancelContentPolicy
    988 {
    989     [policyDecider invalidate];
    990     [policyDecider release];
    991     policyDecider = nil;
    992 }
    993 
    994 - (BOOL)shouldReloadToHandleUnreachableURLFromRequest:(NSURLRequest *)request
     906void FrameLoader::cancelContentPolicyCheck()
     907{
     908    [m_policyDecider.get() invalidate];
     909    m_policyDecider = nil;
     910}
     911
     912bool FrameLoader::shouldReloadToHandleUnreachableURL(NSURLRequest *request)
    995913{
    996914    NSURL *unreachableURL = [request _webDataRequestUnreachableURL];
    997915    if (unreachableURL == nil)
    998         return NO;
    999    
    1000     if (!isBackForwardLoadType(policyLoadType))
    1001         return NO;
    1002    
     916        return false;
     917
     918    if (!isBackForwardLoadType(m_policyLoadType))
     919        return false;
     920
    1003921    // We only treat unreachableURLs specially during the delegate callbacks
    1004922    // for provisional load errors and navigation policy decisions. The former
     
    1007925    // at other times behaves like a standard load.
    1008926    WebDocumentLoader *compareDocumentLoader = nil;
    1009     if (delegateIsDecidingNavigationPolicy || delegateIsHandlingUnimplementablePolicy)
    1010         compareDocumentLoader = policyDocumentLoader;
    1011     else if (delegateIsHandlingProvisionalLoadError)
    1012         compareDocumentLoader = [self provisionalDocumentLoader];
    1013    
    1014     return compareDocumentLoader != nil && [unreachableURL isEqual:[[compareDocumentLoader request] URL]];
    1015 }
    1016 
    1017 - (void)loadDocumentLoader:(WebDocumentLoader *)newDocumentLoader
    1018 {
    1019     if (policyDocumentLoader)
    1020         [self invalidatePendingPolicyDecisionCallingDefaultAction:YES];
    1021    
    1022     [self setPolicyDocumentLoader:newDocumentLoader];
    1023 
    1024     NSMutableURLRequest *r = [policyDocumentLoader request];
    1025     [self addExtraFieldsToRequest:r mainResource:YES alwaysFromRequest:NO];
     927    if (m_delegateIsDecidingNavigationPolicy || m_delegateIsHandlingUnimplementablePolicy)
     928        compareDocumentLoader = m_policyDocumentLoader.get();
     929    else if (m_delegateIsHandlingProvisionalLoadError)
     930        compareDocumentLoader = m_provisionalDocumentLoader.get();
     931
     932    return compareDocumentLoader && [unreachableURL isEqual:[[compareDocumentLoader request] URL]];
     933}
     934
     935void FrameLoader::load(WebDocumentLoader *newDocumentLoader)
     936{
     937    invalidatePendingPolicyDecision(true);
     938    setPolicyDocumentLoader(newDocumentLoader);
     939
     940    NSMutableURLRequest *r = [newDocumentLoader request];
     941    addExtraFieldsToRequest(r, true, false);
    1026942    FrameLoadType type;
    1027     if ([client _shouldTreatURLAsSameAsCurrent:[[policyDocumentLoader originalRequest] URL]]) {
     943    if ([m_client _shouldTreatURLAsSameAsCurrent:[[newDocumentLoader originalRequest] URL]]) {
    1028944        [r setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    1029945        type = FrameLoadTypeSame;
     
    1031947        type = FrameLoadTypeStandard;
    1032948   
    1033     [policyDocumentLoader setOverrideEncoding:[[self documentLoader] overrideEncoding]];
     949    [newDocumentLoader setOverrideEncoding:[documentLoader() overrideEncoding]];
    1034950   
    1035951    // When we loading alternate content for an unreachable URL that we're
    1036952    // visiting in the b/f list, we treat it as a reload so the b/f list
    1037953    // is appropriately maintained.
    1038     if ([self shouldReloadToHandleUnreachableURLFromRequest:[policyDocumentLoader originalRequest]]) {
     954    if (shouldReloadToHandleUnreachableURL([newDocumentLoader originalRequest])) {
    1039955        ASSERT(type == FrameLoadTypeStandard);
    1040956        type = FrameLoadTypeReload;
    1041957    }
    1042    
    1043     [self loadDocumentLoader:policyDocumentLoader withLoadType:type formState:nil];
    1044 }
    1045 
    1046 - (void)_loadRequest:(NSURLRequest *)request triggeringAction:(NSDictionary *)action loadType:(FrameLoadType)type formState:(PassRefPtr<FormState>)formState
    1047 {
    1048     ASSERT(!policyDocumentLoader);
    1049     policyDocumentLoader = [client _createDocumentLoaderWithRequest:request];
    1050 
    1051     [policyDocumentLoader setTriggeringAction:action];
    1052     [policyDocumentLoader setOverrideEncoding:[[self documentLoader] overrideEncoding]];
    1053 
    1054     [self loadDocumentLoader:policyDocumentLoader withLoadType:type formState:formState];
    1055 }
    1056 
    1057 - (void)_reloadAllowingStaleDataWithOverrideEncoding:(NSString *)encoding
    1058 {
    1059     if (documentLoader == nil)
    1060         return;
    1061 
    1062     NSMutableURLRequest *request = [[documentLoader request] mutableCopy];
    1063     NSURL *unreachableURL = [documentLoader unreachableURL];
    1064     if (unreachableURL != nil)
     958
     959    load(newDocumentLoader, type, 0);
     960}
     961
     962void FrameLoader::load(NSURLRequest *request, NSDictionary *action, FrameLoadType type, PassRefPtr<FormState> formState)
     963{
     964    WebDocumentLoader *loader = [m_client _createDocumentLoaderWithRequest:request];
     965    setPolicyDocumentLoader(loader);
     966    [loader release];
     967
     968    [loader setTriggeringAction:action];
     969    [loader setOverrideEncoding:[m_documentLoader.get() overrideEncoding]];
     970
     971    load(loader, type, formState);
     972}
     973
     974void FrameLoader::reloadAllowingStaleData(NSString *encoding)
     975{
     976    if (!m_documentLoader)
     977        return;
     978
     979    NSMutableURLRequest *request = [[m_documentLoader.get() request] mutableCopy];
     980    NSURL *unreachableURL = [m_documentLoader.get() unreachableURL];
     981    if (unreachableURL)
    1065982        [request setURL:unreachableURL];
    1066983
    1067984    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
    1068     ASSERT(!policyDocumentLoader);
    1069     policyDocumentLoader = [client _createDocumentLoaderWithRequest:request];
     985
     986    WebDocumentLoader *loader = [m_client _createDocumentLoaderWithRequest:request];
     987    setPolicyDocumentLoader(loader);
     988    [loader release];
     989
    1070990    [request release];
    1071    
    1072     [policyDocumentLoader setOverrideEncoding:encoding];
    1073 
    1074     [self loadDocumentLoader:policyDocumentLoader withLoadType:FrameLoadTypeReloadAllowingStaleData formState:nil];
    1075 }
    1076 
    1077 - (void)reload
    1078 {
    1079     if (documentLoader == nil)
    1080         return;
    1081 
    1082     NSMutableURLRequest *initialRequest = [documentLoader request];
     991
     992    [loader setOverrideEncoding:encoding];
     993
     994    load(loader, FrameLoadTypeReloadAllowingStaleData, 0);
     995}
     996
     997void FrameLoader::reload()
     998{
     999    if (!m_documentLoader)
     1000        return;
     1001
     1002    NSMutableURLRequest *initialRequest = [m_documentLoader.get() request];
    10831003   
    10841004    // If a window is created by javascript, its main frame can have an empty but non-nil URL.
    10851005    // Reloading in this case will lose the current contents (see 4151001).
    1086     if ([[[[documentLoader request] URL] absoluteString] length] == 0)
     1006    if ([[[initialRequest URL] absoluteString] length] == 0)
    10871007        return;
    10881008
     
    10921012        initialRequest = [NSURLRequest requestWithURL:unreachableURL];
    10931013   
    1094     ASSERT(!policyDocumentLoader);
    1095     policyDocumentLoader = [client _createDocumentLoaderWithRequest:initialRequest];
    1096     NSMutableURLRequest *request = [policyDocumentLoader request];
     1014    WebDocumentLoader *loader = [m_client _createDocumentLoaderWithRequest:initialRequest];
     1015    setPolicyDocumentLoader(loader);
     1016    [loader release];
     1017
     1018    NSMutableURLRequest *request = [loader request];
    10971019
    10981020    [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
     
    11001022    // If we're about to rePOST, set up action so the app can warn the user
    11011023    if (isCaseInsensitiveEqual([request HTTPMethod], @"POST")) {
    1102         NSDictionary *action = [self actionInformationForNavigationType:NavigationTypeFormResubmitted
    1103             event:nil originalURL:[request URL]];
    1104         [policyDocumentLoader setTriggeringAction:action];
    1105     }
    1106 
    1107     [policyDocumentLoader setOverrideEncoding:[documentLoader overrideEncoding]];
    1108    
    1109     [self loadDocumentLoader:policyDocumentLoader withLoadType:FrameLoadTypeReload formState:nil];
    1110 }
    1111 
    1112 - (void)didReceiveServerRedirectForProvisionalLoadForFrame
    1113 {
    1114     [client _dispatchDidReceiveServerRedirectForProvisionalLoadForFrame];
    1115 }
    1116 
    1117 - (void)finishedLoadingDocument:(WebDocumentLoader *)loader
    1118 {
    1119     [client _finishedLoadingDocument:loader];
    1120 }
    1121 
    1122 - (void)committedLoadWithDocumentLoader:(WebDocumentLoader *)loader data:(NSData *)data
    1123 {
    1124     [client _committedLoadWithDocumentLoader:loader data:data];
    1125 }
    1126 
    1127 - (BOOL)isReplacing
    1128 {
    1129     return loadType == FrameLoadTypeReplace;
    1130 }
    1131 
    1132 - (void)setReplacing
    1133 {
    1134     loadType = FrameLoadTypeReplace;
    1135 }
    1136 
    1137 - (void)revertToProvisionalWithDocumentLoader:(WebDocumentLoader *)loader
    1138 {
    1139     [client _revertToProvisionalStateForDocumentLoader:loader];
    1140 }
    1141 
    1142 - (void)documentLoader:(WebDocumentLoader *)loader setMainDocumentError:(NSError *)error
    1143 {
    1144     [client _setMainDocumentError:error forDocumentLoader:loader];
    1145 }
    1146 
    1147 - (void)documentLoader:(WebDocumentLoader *)loader mainReceivedCompleteError:(NSError *)error
     1024        NSDictionary *action = actionInformation(NavigationTypeFormResubmitted, nil, [request URL]);
     1025        [loader setTriggeringAction:action];
     1026    }
     1027
     1028    [loader setOverrideEncoding:[m_documentLoader.get() overrideEncoding]];
     1029   
     1030    load(loader, FrameLoadTypeReload, 0);
     1031}
     1032
     1033void FrameLoader::didReceiveServerRedirectForProvisionalLoadForFrame()
     1034{
     1035    [m_client _dispatchDidReceiveServerRedirectForProvisionalLoadForFrame];
     1036}
     1037
     1038void FrameLoader::finishedLoadingDocument(WebDocumentLoader *loader)
     1039{
     1040    [m_client _finishedLoadingDocument:loader];
     1041}
     1042
     1043void FrameLoader::committedLoad(WebDocumentLoader *loader, NSData *data)
     1044{
     1045    [m_client _committedLoadWithDocumentLoader:loader data:data];
     1046}
     1047
     1048bool FrameLoader::isReplacing() const
     1049{
     1050    return m_loadType == FrameLoadTypeReplace;
     1051}
     1052
     1053void FrameLoader::setReplacing()
     1054{
     1055    m_loadType = FrameLoadTypeReplace;
     1056}
     1057
     1058void FrameLoader::revertToProvisional(WebDocumentLoader *loader)
     1059{
     1060    [m_client _revertToProvisionalStateForDocumentLoader:loader];
     1061}
     1062
     1063void FrameLoader::setMainDocumentError(WebDocumentLoader *loader, NSError *error)
     1064{
     1065    [m_client _setMainDocumentError:error forDocumentLoader:loader];
     1066}
     1067
     1068void FrameLoader::mainReceivedCompleteError(WebDocumentLoader *loader, NSError *error)
    11481069{
    11491070    [loader setPrimaryLoadComplete:YES];
    1150     [client _dispatchDidLoadMainResourceForDocumentLoader:[self activeDocumentLoader]];
    1151     [self checkLoadComplete];
    1152 }
    1153 
    1154 - (void)finalSetupForReplaceWithDocumentLoader:(WebDocumentLoader *)loader
    1155 {
    1156     [client _clearUnarchivingStateForLoader:loader];
    1157 }
    1158 
    1159 - (void)prepareForLoadStart
    1160 {
    1161     [client _progressStarted];
    1162     [client _dispatchDidStartProvisionalLoadForFrame];
    1163 }
    1164 
    1165 - (BOOL)subframeIsLoading
     1071    [m_client _dispatchDidLoadMainResourceForDocumentLoader:activeDocumentLoader()];
     1072    checkLoadComplete();
     1073}
     1074
     1075void FrameLoader::finalSetupForReplace(WebDocumentLoader *loader)
     1076{
     1077    [m_client _clearUnarchivingStateForLoader:loader];
     1078}
     1079
     1080void FrameLoader::prepareForLoadStart()
     1081{
     1082    [m_client _progressStarted];
     1083    [m_client _dispatchDidStartProvisionalLoadForFrame];
     1084}
     1085
     1086bool FrameLoader::subframeIsLoading() const
    11661087{
    11671088    // It's most likely that the last added frame is the last to load so we walk backwards.
    1168     for (WebCoreFrameBridge *frame = [frameBridge lastChild]; frame; frame = [frame previousSibling])
    1169         if ([[[frame frameLoader] documentLoader] isLoadingInAPISense] || [[[frame frameLoader] provisionalDocumentLoader] isLoadingInAPISense])
    1170             return YES;
    1171     return NO;
    1172 }
    1173 
    1174 - (void)willChangeTitleForDocument:(WebDocumentLoader *)loader
    1175 {
    1176     [client _willChangeTitleForDocument:loader];
    1177 }
    1178 
    1179 - (void)didChangeTitleForDocument:(WebDocumentLoader *)loader
    1180 {
    1181     [client _didChangeTitleForDocument:loader];
     1089    for (Frame* child = m_frame->tree()->lastChild(); child; child = child->tree()->previousSibling()) {
     1090        FrameLoader* childLoader = [Mac(child)->bridge() frameLoader];
     1091        if ([childLoader->documentLoader() isLoadingInAPISense] || [childLoader->provisionalDocumentLoader() isLoadingInAPISense])
     1092            return true;
     1093    }
     1094    return false;
     1095}
     1096
     1097void FrameLoader::willChangeTitle(WebDocumentLoader *loader)
     1098{
     1099    [m_client _willChangeTitleForDocument:loader];
     1100}
     1101
     1102void FrameLoader::didChangeTitle(WebDocumentLoader *loader)
     1103{
     1104    [m_client _didChangeTitleForDocument:loader];
    11821105
    11831106    // The title doesn't get communicated to the WebView until we are committed.
     
    11871110            // Must update the entries in the back-forward list too.
    11881111            // This must go through the WebFrame because it has the right notion of the current b/f item.
    1189             [client _setTitle:[loader title] forURL:URLForHistory];
    1190             [client _setMainFrameDocumentReady:YES]; // update observers with new DOMDocument
    1191             [client _dispatchDidReceiveTitle:[loader title]];
     1112            [m_client _setTitle:[loader title] forURL:URLForHistory];
     1113            [m_client _setMainFrameDocumentReady:YES]; // update observers with new DOMDocument
     1114            [m_client _dispatchDidReceiveTitle:[loader title]];
    11921115        }
    11931116    }
    11941117}
    11951118
    1196 - (FrameLoadType)loadType
    1197 {
    1198     return loadType;
    1199 }
    1200 
    1201 - (void)setLoadType:(FrameLoadType)type
    1202 {
    1203     loadType = type;
    1204 }
    1205 
    1206 - (void)invalidatePendingPolicyDecisionCallingDefaultAction:(BOOL)call
    1207 {
    1208     [policyDecider invalidate];
    1209     [policyDecider release];
    1210     policyDecider = nil;
    1211 
    1212     NSURLRequest *request = policyRequest;
    1213     NSString *frameName = policyFrameName;
    1214     id target = policyTarget;
    1215     SEL selector = policySelector;
    1216     RefPtr<FormState> formState = adoptRef(policyFormState);
    1217 
    1218     policyRequest = nil;
    1219     policyFrameName = nil;
    1220     policyTarget = nil;
    1221     policySelector = nil;
    1222     policyFormState = 0;
    1223 
    1224     if (call) {
    1225         if (frameName)
    1226             objc_msgSend(target, selector, nil, nil, nil);
     1119FrameLoadType FrameLoader::loadType() const
     1120{
     1121    return m_loadType;
     1122}
     1123
     1124void FrameLoader::invalidatePendingPolicyDecision(bool callDefaultAction)
     1125{
     1126    [m_policyDecider.get() invalidate];
     1127    m_policyDecider = nil;
     1128
     1129    bool hadFrameName = m_policyFrameName;
     1130    RetainPtr<id> target = m_policyTarget;
     1131    SEL selector = m_policySelector;
     1132
     1133    m_policyRequest = nil;
     1134    m_policyFrameName = nil;
     1135    m_policyTarget = nil;
     1136    m_policyFormState = 0;
     1137
     1138    if (callDefaultAction) {
     1139        if (hadFrameName)
     1140            objc_msgSend(target.get(), selector, nil, nil, nil);
    12271141        else
    1228             objc_msgSend(target, selector, nil, nil);
    1229     }
    1230 
    1231     [request release];
    1232     [frameName release];
    1233     [target release];
    1234 }
    1235 
    1236 - (void)checkNewWindowPolicyForRequest:(NSURLRequest *)request action:(NSDictionary *)action frameName:(NSString *)frameName formState:(PassRefPtr<FormState>)formState andCall:(id)target withSelector:(SEL)selector
    1237 {
    1238     WebPolicyDecider *decider = [client _createPolicyDeciderWithTarget:self action:@selector(continueAfterNewWindowPolicy:)];
    1239 
    1240     policyRequest = [request retain];
    1241     policyTarget = [target retain];
    1242     policyFrameName = [frameName retain];
    1243     policySelector = selector;
    1244     policyDecider = [decider retain];
    1245     ASSERT(!policyFormState);
    1246     policyFormState = formState.release();
    1247 
    1248     [client _dispatchDecidePolicyForNewWindowAction:action request:request newFrameName:frameName decider:decider];
    1249    
     1142            objc_msgSend(target.get(), selector, nil, nil);
     1143    }
     1144}
     1145
     1146void FrameLoader::checkNewWindowPolicy(NSURLRequest *request, NSDictionary *action,
     1147    NSString *frameName, PassRefPtr<FormState> formState)
     1148{
     1149    WebPolicyDecider *decider = [m_client _createPolicyDeciderWithTarget:asDelegate()
     1150        action:@selector(continueAfterNewWindowPolicy:)];
     1151
     1152    m_policyRequest = request;
     1153    m_policyTarget = asDelegate();
     1154    m_policyFrameName = frameName;
     1155    m_policySelector = @selector(continueLoadRequestAfterNewWindowPolicy:frameName:formState:);
     1156    m_policyDecider = decider;
     1157    m_policyFormState = formState;
     1158
     1159    [m_client _dispatchDecidePolicyForNewWindowAction:action request:request
     1160        newFrameName:frameName decider:decider];
     1161
    12501162    [decider release];
    12511163}
    12521164
    1253 - (void)continueAfterNewWindowPolicy:(WebPolicyAction)policy
    1254 {
    1255     NSURLRequest *request = [[policyRequest retain] autorelease];
    1256     NSString *frameName = [[policyFrameName retain] autorelease];
    1257     id target = [[policyTarget retain] autorelease];
    1258     SEL selector = policySelector;
    1259     RefPtr<FormState> formState = policyFormState;
    1260 
    1261     // will release policy* objects, hence the above retains
    1262     [self invalidatePendingPolicyDecisionCallingDefaultAction:NO];
     1165void FrameLoader::continueAfterNewWindowPolicy(WebPolicyAction policy)
     1166{
     1167    RetainPtr<NSURLRequest> request = m_policyRequest;
     1168    RetainPtr<NSString> frameName = m_policyFrameName;
     1169    RetainPtr<id> target = m_policyTarget;
     1170    SEL selector = m_policySelector;
     1171    RefPtr<FormState> formState = m_policyFormState;
     1172
     1173    invalidatePendingPolicyDecision(false);
    12631174
    12641175    switch (policy) {
     
    12671178            break;
    12681179        case WebPolicyDownload:
    1269             [client _startDownloadWithRequest:request];
     1180            [m_client _startDownloadWithRequest:request.get()];
    12701181            request = nil;
    12711182            break;
     
    12741185    }
    12751186
    1276     objc_msgSend(target, selector, request, frameName, formState.get());
    1277 }
    1278 
    1279 - (void)checkNavigationPolicyForRequest:(NSURLRequest *)request
    1280                          documentLoader:(WebDocumentLoader *)loader
    1281                               formState:(PassRefPtr<FormState>)formState
    1282                                 andCall:(id)target
    1283                            withSelector:(SEL)selector
     1187    objc_msgSend(target.get(), selector, request.get(), frameName.get(), formState.get());
     1188}
     1189
     1190void FrameLoader::checkNavigationPolicy(NSURLRequest *request, WebDocumentLoader *loader,
     1191    PassRefPtr<FormState> formState, id target, SEL selector)
    12841192{
    12851193    NSDictionary *action = [loader triggeringAction];
    12861194    if (action == nil) {
    1287         action = [self actionInformationForNavigationType:NavigationTypeOther
    1288             event:nil originalURL:[request URL]];
     1195        action = actionInformation(NavigationTypeOther, nil, [request URL]);
    12891196        [loader setTriggeringAction:action];
    12901197    }
     
    12931200    // This avoids confusion on the part of the client.
    12941201    if ([request isEqual:[loader lastCheckedRequest]] || urlIsEmpty([request URL])) {
    1295         [target performSelector:selector withObject:request withObject:nil];
     1202        objc_msgSend(target, selector, request, nil);
    12961203        return;
    12971204    }
     
    13001207    // treat it like a reload so it maintains the right state for b/f list.
    13011208    if ([request _webDataRequestUnreachableURL] != nil) {
    1302         if (isBackForwardLoadType(policyLoadType))
    1303             policyLoadType = FrameLoadTypeReload;
    1304         [target performSelector:selector withObject:request withObject:nil];
     1209        if (isBackForwardLoadType(m_policyLoadType))
     1210            m_policyLoadType = FrameLoadTypeReload;
     1211        objc_msgSend(target, selector, request, nil);
    13051212        return;
    13061213    }
     
    13081215    [loader setLastCheckedRequest:request];
    13091216
    1310     WebPolicyDecider *decider = [client _createPolicyDeciderWithTarget:self action:@selector(continueAfterNavigationPolicy:)];
    1311    
    1312     ASSERT(policyRequest == nil);
    1313     policyRequest = [request retain];
    1314     ASSERT(policyTarget == nil);
    1315     policyTarget = [target retain];
    1316     policySelector = selector;
    1317     ASSERT(policyDecider == nil);
    1318     policyDecider = [decider retain];
    1319     ASSERT(!policyFormState);
    1320     policyFormState = formState.release();
    1321 
    1322     delegateIsDecidingNavigationPolicy = YES;
    1323     [client _dispatchDecidePolicyForNavigationAction:action request:request decider:decider];
    1324     delegateIsDecidingNavigationPolicy = NO;
     1217    WebPolicyDecider *decider = [m_client _createPolicyDeciderWithTarget:asDelegate()
     1218        action:@selector(continueAfterNavigationPolicy:)];
     1219   
     1220    m_policyRequest = request;
     1221    m_policyTarget = target;
     1222    m_policySelector = selector;
     1223    m_policyDecider = decider;
     1224    m_policyFormState = formState;
     1225
     1226    m_delegateIsDecidingNavigationPolicy = true;
     1227    [m_client _dispatchDecidePolicyForNavigationAction:action request:request decider:decider];
     1228    m_delegateIsDecidingNavigationPolicy = false;
    13251229   
    13261230    [decider release];
    13271231}
    13281232
    1329 - (void)continueAfterNavigationPolicy:(WebPolicyAction)policy
    1330 {
    1331     NSURLRequest *request = [[policyRequest retain] autorelease];
    1332     id target = [[policyTarget retain] autorelease];
    1333     SEL selector = policySelector;
    1334     RefPtr<FormState> formState = policyFormState;
    1335    
    1336     // will release policy* objects, hence the above retains
    1337     [self invalidatePendingPolicyDecisionCallingDefaultAction:NO];
     1233void FrameLoader::continueAfterNavigationPolicy(WebPolicyAction policy)
     1234{
     1235    RetainPtr<NSURLRequest> request = m_policyRequest;
     1236    RetainPtr<id> target = m_policyTarget;
     1237    SEL selector = m_policySelector;
     1238    RefPtr<FormState> formState = m_policyFormState.release();
     1239   
     1240    invalidatePendingPolicyDecision(false);
    13381241
    13391242    switch (policy) {
     
    13421245            break;
    13431246        case WebPolicyDownload:
    1344             [client _startDownloadWithRequest:request];
     1247            [m_client _startDownloadWithRequest:request.get()];
    13451248            request = nil;
    13461249            break;
    13471250        case WebPolicyUse:
    1348             if (![client _canHandleRequest:request]) {
    1349                 [self handleUnimplementablePolicyWithError:[client _cannotShowURLErrorWithRequest:request]];
     1251            if (![m_client _canHandleRequest:request.get()]) {
     1252                handleUnimplementablePolicy([m_client _cannotShowURLErrorWithRequest:request.get()]);
    13501253                request = nil;
    13511254            }
     
    13531256    }
    13541257
    1355     objc_msgSend(target, selector, request, formState.get());
    1356 }
    1357 
    1358 // Called after the FormsDelegate is done processing willSubmitForm:
    1359 - (void)continueAfterWillSubmitForm:(WebPolicyAction)policy
    1360 {
    1361     if (policyDecider) {
    1362         [policyDecider invalidate];
    1363         [policyDecider release];
    1364         policyDecider = nil;
    1365     }
    1366     [self startLoading];
    1367 }
    1368 
    1369 - (void)continueLoadRequestAfterNavigationPolicy:(NSURLRequest *)request formState:(FormState *)formState
     1258    objc_msgSend(target.get(), selector, request.get(), formState.get());
     1259}
     1260
     1261void FrameLoader::continueAfterWillSubmitForm(WebPolicyAction policy)
     1262{
     1263    if (m_policyDecider) {
     1264        [m_policyDecider.get() invalidate];
     1265        m_policyDecider = nil;
     1266    }
     1267    startLoading();
     1268}
     1269
     1270void FrameLoader::continueLoadRequestAfterNavigationPolicy(NSURLRequest *request, FormState* formState)
    13701271{
    13711272    // If we loaded an alternate page to replace an unreachableURL, we'll get in here with a
    13721273    // nil policyDataSource because loading the alternate page will have passed
    13731274    // through this method already, nested; otherwise, policyDataSource should still be set.
    1374     ASSERT(policyDocumentLoader || [provisionalDocumentLoader unreachableURL] != nil);
    1375 
    1376     BOOL isTargetItem = [client _provisionalItemIsTarget];
     1275    ASSERT(m_policyDocumentLoader || [m_provisionalDocumentLoader.get() unreachableURL] != nil);
     1276
     1277    BOOL isTargetItem = [m_client _provisionalItemIsTarget];
    13771278
    13781279    // Two reasons we can't continue:
     
    13811282    //    2) User responded Cancel to an alert popped up by the before unload event handler.
    13821283    // The "before unload" event handler runs only for the main frame.
    1383     BOOL canContinue = request && (![self isLoadingMainFrame] || [frameBridge shouldClose]);
     1284    bool canContinue = request && (!isLoadingMainFrame() || [bridge() shouldClose]);
    13841285
    13851286    if (!canContinue) {
    13861287        // If we were waiting for a quick redirect, but the policy delegate decided to ignore it, then we
    13871288        // need to report that the client redirect was cancelled.
    1388         if (quickRedirectComing)
    1389             [self clientRedirectCancelledOrFinished:NO];
    1390 
    1391         [self setPolicyDocumentLoader:nil];
     1289        if (m_quickRedirectComing)
     1290            clientRedirectCancelledOrFinished(false);
     1291
     1292        setPolicyDocumentLoader(nil);
    13921293
    13931294        // If the navigation request came from the back/forward menu, and we punt on it, we have the
    13941295        // problem that we have optimistically moved the b/f cursor already, so move it back.  For sanity,
    13951296        // we only do this when punting a navigation for the target frame or top-level frame. 
    1396         if ((isTargetItem || [self isLoadingMainFrame]) && isBackForwardLoadType(policyLoadType))
    1397             [client _resetBackForwardList];
    1398 
    1399         return;
    1400     }
    1401    
    1402     FrameLoadType type = policyLoadType;
    1403     WebDocumentLoader *dl = [policyDocumentLoader retain];
    1404    
    1405     [self stopLoading];
    1406     loadType = type;
    1407 
    1408     [self startProvisionalLoad:dl];
    1409 
    1410     [dl release];
    1411     [self setPolicyDocumentLoader:nil];
    1412    
    1413     if (isBackForwardLoadType(type) && [client _loadProvisionalItemFromPageCache])
     1297        if ((isTargetItem || isLoadingMainFrame()) && isBackForwardLoadType(m_policyLoadType))
     1298            [m_client _resetBackForwardList];
     1299
     1300        return;
     1301    }
     1302
     1303    FrameLoadType type = m_policyLoadType;
     1304    stopLoading();
     1305    setProvisionalDocumentLoader(m_policyDocumentLoader.get());
     1306    m_loadType = type;
     1307    setState(WebFrameStateProvisional);
     1308
     1309    setPolicyDocumentLoader(nil);
     1310
     1311    if (isBackForwardLoadType(type) && [m_client _loadProvisionalItemFromPageCache])
    14141312        return;
    14151313
     
    14171315        // It's a bit of a hack to reuse the WebPolicyDecisionListener for the continuation
    14181316        // mechanism across the willSubmitForm callout.
    1419         policyDecider = [client _createPolicyDeciderWithTarget:self action:@selector(continueAfterWillSubmitForm:)];
    1420         [client _dispatchSourceFrame:Mac(formState->sourceFrame())->bridge()
     1317        WebPolicyDecider *decider = [m_client _createPolicyDeciderWithTarget:asDelegate() action:@selector(continueAfterWillSubmitForm:)];
     1318        m_policyDecider = decider;
     1319        [m_client _dispatchSourceFrame:Mac(formState->sourceFrame())->bridge()
    14211320            willSubmitForm:[DOMElement _elementWith:formState->form()]
    1422             withValues:formState->valuesAsNSDictionary() submissionDecider:policyDecider];
     1321            withValues:formState->valuesAsNSDictionary() submissionDecider:decider];
     1322        [decider release];
    14231323    } else
    1424         [self continueAfterWillSubmitForm:WebPolicyUse];
    1425 }
    1426 
    1427 - (void)loadDocumentLoader:(WebDocumentLoader *)loader withLoadType:(FrameLoadType)type formState:(PassRefPtr<FormState>)formState
    1428 {
    1429     ASSERT([client _hasWebView]);
     1324        continueAfterWillSubmitForm(WebPolicyUse);
     1325}
     1326
     1327void FrameLoader::load(WebDocumentLoader *loader, FrameLoadType type, PassRefPtr<FormState> formState)
     1328{
     1329    ASSERT([m_client _hasWebView]);
    14301330
    14311331    // Unfortunately the view must be non-nil, this is ultimately due
    14321332    // to parser requiring a FrameView.  We should fix this dependency.
    14331333
    1434     ASSERT([client _hasFrameView]);
    1435 
    1436     policyLoadType = type;
    1437 
    1438     WebCoreFrameBridge *parentFrame = [[self bridge] parent];
    1439     if (parentFrame)
    1440         [loader setOverrideEncoding:[[[parentFrame frameLoader] documentLoader] overrideEncoding]];
    1441 
    1442     [loader setFrameLoader:self];
    1443 
    1444     [self invalidatePendingPolicyDecisionCallingDefaultAction:YES];
    1445 
    1446     [self setPolicyDocumentLoader:loader];
    1447 
    1448     [self checkNavigationPolicyForRequest:[loader request]
    1449                            documentLoader:loader
    1450                                 formState:formState
    1451                                   andCall:self
    1452                              withSelector:@selector(continueLoadRequestAfterNavigationPolicy:formState:)];
    1453 }
    1454 
    1455 - (void)didFirstLayout
    1456 {
    1457     if (isBackForwardLoadType(loadType) && [client _hasBackForwardList])
    1458         [client _restoreScrollPositionAndViewState];
    1459 
    1460     firstLayoutDone = YES;
    1461     [client _dispatchDidFirstLayoutInFrame];
    1462 }
    1463 
    1464 - (void)frameLoadCompleted
    1465 {
    1466     [client _frameLoadCompleted];
    1467 
    1468     // After a canceled provisional load, firstLayoutDone is NO. Reset it to YES if we're displaying a page.
    1469     if (documentLoader)
    1470         firstLayoutDone = YES;
    1471 }
    1472 
    1473 - (BOOL)firstLayoutDone
    1474 {
    1475     return firstLayoutDone;
    1476 }
    1477 
    1478 - (BOOL)isQuickRedirectComing
    1479 {
    1480     return quickRedirectComing;
    1481 }
    1482 
    1483 - (void)transitionToCommitted:(NSDictionary *)pageCache
    1484 {
    1485     ASSERT([client _hasWebView]);
    1486     ASSERT([self state] == WebFrameStateProvisional);
    1487 
    1488     if ([self state] != WebFrameStateProvisional)
    1489         return;
    1490 
    1491     [client _setCopiesOnScroll];
    1492     [client _updateHistoryForCommit];
     1334    ASSERT([m_client _hasFrameView]);
     1335
     1336    m_policyLoadType = type;
     1337
     1338    if (Frame* parent = m_frame->tree()->parent())
     1339        [loader setOverrideEncoding:[[Mac(parent)->bridge() frameLoader]->documentLoader() overrideEncoding]];
     1340
     1341    invalidatePendingPolicyDecision(true);
     1342    setPolicyDocumentLoader(loader);
     1343
     1344    checkNavigationPolicy([loader request], loader, formState,
     1345        asDelegate(), @selector(continueLoadRequestAfterNavigationPolicy:formState:));
     1346}
     1347
     1348void FrameLoader::didFirstLayout()
     1349{
     1350    if (isBackForwardLoadType(m_loadType) && [m_client _hasBackForwardList])
     1351        [m_client _restoreScrollPositionAndViewState];
     1352
     1353    m_firstLayoutDone = true;
     1354    [m_client _dispatchDidFirstLayoutInFrame];
     1355}
     1356
     1357void FrameLoader::frameLoadCompleted()
     1358{
     1359    [m_client _frameLoadCompleted];
     1360
     1361    // After a canceled provisional load, firstLayoutDone is false.
     1362    // Reset it to YES if we're displaying a page.
     1363    if (m_documentLoader)
     1364        m_firstLayoutDone = true;
     1365}
     1366
     1367bool FrameLoader::firstLayoutDone() const
     1368{
     1369    return m_firstLayoutDone;
     1370}
     1371
     1372bool FrameLoader::isQuickRedirectComing() const
     1373{
     1374    return m_quickRedirectComing;
     1375}
     1376
     1377void FrameLoader::transitionToCommitted(NSDictionary *pageCache)
     1378{
     1379    ASSERT([m_client _hasWebView]);
     1380    ASSERT(m_state == WebFrameStateProvisional);
     1381
     1382    if (m_state != WebFrameStateProvisional)
     1383        return;
     1384
     1385    [m_client _setCopiesOnScroll];
     1386    [m_client _updateHistoryForCommit];
    14931387
    14941388    // The call to closeURL invokes the unload event handler, which can execute arbitrary
    14951389    // JavaScript. If the script initiates a new load, we need to abandon the current load,
    14961390    // or the two will stomp each other.
    1497     WebDocumentLoader *pdl = provisionalDocumentLoader;
    1498     [frameBridge closeURL];
    1499     if (pdl != provisionalDocumentLoader)
    1500         return;
    1501 
    1502     [self commitProvisionalLoad];
     1391    WebDocumentLoader *pdl = m_provisionalDocumentLoader.get();
     1392    [bridge() closeURL];
     1393    if (pdl != m_provisionalDocumentLoader)
     1394        return;
     1395
     1396    commitProvisionalLoad();
    15031397
    15041398    // Handle adding the URL to the back/forward list.
    1505     WebDocumentLoader *dl = documentLoader;
     1399    WebDocumentLoader *dl = m_documentLoader.get();
    15061400    NSString *ptitle = [dl title];
    15071401
    1508     switch (loadType) {
     1402    switch (m_loadType) {
    15091403    case FrameLoadTypeForward:
    15101404    case FrameLoadTypeBack:
    15111405    case FrameLoadTypeIndexedBackForward:
    1512         if ([client _hasBackForwardList]) {
    1513             [client _updateHistoryForBackForwardNavigation];
     1406        if ([m_client _hasBackForwardList]) {
     1407            [m_client _updateHistoryForBackForwardNavigation];
    15141408
    15151409            // Create a document view for this document, or used the cached view.
    15161410            if (pageCache)
    1517                 [client _setDocumentViewFromPageCache:pageCache];
     1411                [m_client _setDocumentViewFromPageCache:pageCache];
    15181412            else
    1519                 [client _makeDocumentView];
     1413                [m_client _makeDocumentView];
    15201414        }
    15211415        break;
     
    15241418    case FrameLoadTypeSame:
    15251419    case FrameLoadTypeReplace:
    1526         [client _updateHistoryForReload];
    1527         [client _makeDocumentView];
     1420        [m_client _updateHistoryForReload];
     1421        [m_client _makeDocumentView];
    15281422        break;
    15291423
    15301424    // FIXME - just get rid of this case, and merge FrameLoadTypeReloadAllowingStaleData with the above case
    15311425    case FrameLoadTypeReloadAllowingStaleData:
    1532         [client _makeDocumentView];
     1426        [m_client _makeDocumentView];
    15331427        break;
    15341428
    15351429    case FrameLoadTypeStandard:
    1536         [client _updateHistoryForStandardLoad];
    1537         [client _makeDocumentView];
     1430        [m_client _updateHistoryForStandardLoad];
     1431        [m_client _makeDocumentView];
    15381432        break;
    15391433
    15401434    case FrameLoadTypeInternal:
    1541         [client _updateHistoryForInternalLoad];
    1542         [client _makeDocumentView];
     1435        [m_client _updateHistoryForInternalLoad];
     1436        [m_client _makeDocumentView];
    15431437        break;
    15441438
     
    15501444
    15511445    // Tell the client we've committed this URL.
    1552     ASSERT([client _hasFrameView]);
    1553     [client _dispatchDidCommitLoadForFrame];
     1446    ASSERT([m_client _hasFrameView]);
     1447    [m_client _dispatchDidCommitLoadForFrame];
    15541448   
    15551449    // If we have a title let the WebView know about it.
    15561450    if (ptitle)
    1557         [client _dispatchDidReceiveTitle:ptitle];
    1558 }
    1559 
    1560 - (void)checkLoadCompleteForThisFrame
    1561 {
    1562     ASSERT([client _hasWebView]);
    1563 
    1564     switch ([self state]) {
     1451        [m_client _dispatchDidReceiveTitle:ptitle];
     1452}
     1453
     1454void FrameLoader::checkLoadCompleteForThisFrame()
     1455{
     1456    ASSERT([m_client _hasWebView]);
     1457
     1458    switch (m_state) {
    15651459        case WebFrameStateProvisional: {
    1566             if (delegateIsHandlingProvisionalLoadError)
     1460            if (m_delegateIsHandlingProvisionalLoadError)
    15671461                return;
    15681462
    1569             WebDocumentLoader *pdl = [provisionalDocumentLoader retain];
     1463            WebDocumentLoader *pdl = m_provisionalDocumentLoader.get();
    15701464
    15711465            // If we've received any errors we may be stuck in the provisional state and actually complete.
    15721466            NSError *error = [pdl mainDocumentError];
    1573             if (error != nil) {
    1574                 // Check all children first.
    1575                 LoadErrorResetToken *resetToken = [client _tokenForLoadErrorReset];
    1576                 BOOL shouldReset = YES;
    1577                 if (![pdl isLoadingInAPISense]) {
    1578                     delegateIsHandlingProvisionalLoadError = YES;
    1579                     [client _dispatchDidFailProvisionalLoadWithError:error];
    1580                     delegateIsHandlingProvisionalLoadError = NO;
    1581 
    1582                     // FIXME: can stopping loading here possibly have
    1583                     // any effect, if isLoading is false, which it
    1584                     // must be, to be in this branch of the if? And is it ok to just do
    1585                     // a full-on stopLoading?
    1586                     [self stopLoadingSubframes];
    1587                     [pdl stopLoading];
    1588 
    1589                     // Finish resetting the load state, but only if another load hasn't been started by the
    1590                     // delegate callback.
    1591                     if (pdl == provisionalDocumentLoader)
    1592                         [self clearProvisionalLoad];
    1593                     else {
    1594                         NSURL *unreachableURL = [provisionalDocumentLoader unreachableURL];
    1595                         if (unreachableURL != nil && [unreachableURL isEqual:[[pdl request] URL]])
    1596                             shouldReset = NO;
    1597                     }
     1467            if (!error)
     1468                return;
     1469
     1470            [pdl retain];
     1471
     1472            // Check all children first.
     1473            LoadErrorResetToken *resetToken = [m_client _tokenForLoadErrorReset];
     1474            bool shouldReset = true;
     1475            if (![pdl isLoadingInAPISense]) {
     1476                m_delegateIsHandlingProvisionalLoadError = true;
     1477                [m_client _dispatchDidFailProvisionalLoadWithError:error];
     1478                m_delegateIsHandlingProvisionalLoadError = false;
     1479
     1480                // FIXME: can stopping loading here possibly have any effect, if isLoading is false,
     1481                // which it must be to be in this branch of the if? And is it OK to just do a full-on
     1482                // stopLoading instead of stopLoadingSubframes?
     1483                stopLoadingSubframes();
     1484                [pdl stopLoading];
     1485
     1486                // Finish resetting the load state, but only if another load hasn't been started by the
     1487                // delegate callback.
     1488                if (pdl == m_provisionalDocumentLoader)
     1489                    clearProvisionalLoad();
     1490                else {
     1491                    NSURL *unreachableURL = [m_provisionalDocumentLoader.get() unreachableURL];
     1492                    if (unreachableURL != nil && [unreachableURL isEqual:[[pdl request] URL]])
     1493                        shouldReset = false;
    15981494                }
    1599                 if (shouldReset)
    1600                     [client _resetAfterLoadError:resetToken];
    1601                 else
    1602                     [client _doNotResetAfterLoadError:resetToken];
    16031495            }
     1496            if (shouldReset)
     1497                [m_client _resetAfterLoadError:resetToken];
     1498            else
     1499                [m_client _doNotResetAfterLoadError:resetToken];
    16041500            [pdl release];
    16051501            return;
     
    16071503       
    16081504        case WebFrameStateCommittedPage: {
    1609             WebDocumentLoader *dl = documentLoader;
    1610            
    1611             if (![dl isLoadingInAPISense]) {
    1612                 [self markLoadComplete];
    1613 
    1614                 // FIXME: Is this subsequent work important if we already navigated away?
    1615                 // Maybe there are bugs because of that, or extra work we can skip because
    1616                 // the new page is ready.
    1617 
    1618                 [client _forceLayoutForNonHTML];
    1619                  
    1620                 // If the user had a scroll point, scroll to it, overriding the anchor point if any.
    1621                 if ((isBackForwardLoadType([self loadType]) || [self loadType] == FrameLoadTypeReload)
    1622                         && [client _hasBackForwardList])
    1623                     [client _restoreScrollPositionAndViewState];
    1624 
    1625                 NSError *error = [dl mainDocumentError];
    1626                 if (error != nil)
    1627                     [client _dispatchDidFailLoadWithError:error];
    1628                 else
    1629                     [client _dispatchDidFinishLoadForFrame];
    1630                
    1631                 [client _progressCompleted];
    1632  
     1505            WebDocumentLoader *dl = m_documentLoader.get();           
     1506            if ([dl isLoadingInAPISense])
    16331507                return;
    1634             }
     1508
     1509            markLoadComplete();
     1510
     1511            // FIXME: Is this subsequent work important if we already navigated away?
     1512            // Maybe there are bugs because of that, or extra work we can skip because
     1513            // the new page is ready.
     1514
     1515            [m_client _forceLayoutForNonHTML];
     1516             
     1517            // If the user had a scroll point, scroll to it, overriding the anchor point if any.
     1518            if ((isBackForwardLoadType(m_loadType) || m_loadType == FrameLoadTypeReload)
     1519                    && [m_client _hasBackForwardList])
     1520                [m_client _restoreScrollPositionAndViewState];
     1521
     1522            NSError *error = [dl mainDocumentError];
     1523            if (error)
     1524                [m_client _dispatchDidFailLoadWithError:error];
     1525            else
     1526                [m_client _dispatchDidFinishLoadForFrame];
     1527
     1528            [m_client _progressCompleted];
    16351529            return;
    16361530        }
     
    16391533            // Even if already complete, we might have set a previous item on a frame that
    16401534            // didn't do any data loading on the past transaction. Make sure to clear these out.
    1641             [client _frameLoadCompleted];
     1535            [m_client _frameLoadCompleted];
    16421536            return;
    16431537    }
     
    16461540}
    16471541
    1648 - (void)continueLoadRequestAfterNewWindowPolicy:(NSURLRequest *)request frameName:(NSString *)frameName formState:(FormState *)formState
     1542void FrameLoader::continueLoadRequestAfterNewWindowPolicy(NSURLRequest *request, NSString *frameName, FormState* formState)
    16491543{
    16501544    if (!request)
    16511545        return;
    16521546
    1653     WebCoreFrameBridge <WebCoreFrameBridge> *bridge = frameBridge;
    1654     [bridge retain];
    1655 
    1656     WebCoreFrameBridge *mainBridge = [client _dispatchCreateWebViewWithRequest:nil];
     1547    RefPtr<Frame> frame = m_frame;
     1548
     1549    WebCoreFrameBridge *mainBridge = [m_client _dispatchCreateWebViewWithRequest:nil];
    16571550    if (!mainBridge)
    1658         goto exit;
     1551        return;
    16591552
    16601553    [mainBridge retain];
    16611554
    16621555    [mainBridge setName:frameName];
    1663 
    1664     [[[mainBridge frameLoader] client] _dispatchShow];
    1665 
    1666     [mainBridge setOpener:bridge];
    1667     [[mainBridge frameLoader] _loadRequest:request triggeringAction:nil loadType:FrameLoadTypeStandard formState:formState];
     1556    [[mainBridge frameLoader]->client() _dispatchShow];
     1557    [mainBridge impl]->setOpener(frame.get());
     1558    [mainBridge frameLoader]->load(request, nil, FrameLoadTypeStandard, formState);
    16681559
    16691560    [mainBridge release];
    1670 
    1671 exit:
    1672     [bridge release];
    1673 }
    1674 
    1675 - (void)sendRemainingDelegateMessagesWithIdentifier:(id)identifier response:(NSURLResponse *)response length:(unsigned)length error:(NSError *)error
     1561}
     1562
     1563void FrameLoader::sendRemainingDelegateMessages(id identifier, NSURLResponse *response, unsigned length, NSError *error)
    16761564{   
    1677     if (response != nil)
    1678         [client _dispatchResource:identifier didReceiveResponse:response fromDocumentLoader:documentLoader];
     1565    if (response)
     1566        [m_client _dispatchResource:identifier didReceiveResponse:response fromDocumentLoader:m_documentLoader.get()];
    16791567   
    16801568    if (length > 0)
    1681         [client _dispatchResource:identifier didReceiveContentLength:length fromDocumentLoader:documentLoader];
    1682    
    1683     if (error == nil)
    1684         [client _dispatchResource:identifier didFinishLoadingFromDocumentLoader:documentLoader];
     1569        [m_client _dispatchResource:identifier didReceiveContentLength:length fromDocumentLoader:m_documentLoader.get()];
     1570   
     1571    if (!error)
     1572        [m_client _dispatchResource:identifier didFinishLoadingFromDocumentLoader:m_documentLoader.get()];
    16851573    else
    1686         [client _dispatchResource:identifier didFailLoadingWithError:error fromDocumentLoader:documentLoader];
    1687 }
    1688 
    1689 - (NSURLRequest *)requestFromDelegateForRequest:(NSURLRequest *)request identifier:(id *)identifier error:(NSError **)error
     1574        [m_client _dispatchResource:identifier didFailLoadingWithError:error fromDocumentLoader:m_documentLoader.get()];
     1575}
     1576
     1577NSURLRequest *FrameLoader::requestFromDelegate(NSURLRequest *request, id& identifier, NSError *& error)
    16901578{
    16911579    ASSERT(request != nil);
    1692    
    1693     *identifier = [client _dispatchIdentifierForInitialRequest:request fromDocumentLoader:documentLoader];
    1694     NSURLRequest *newRequest = [client _dispatchResource:*identifier willSendRequest:request redirectResponse:nil fromDocumentLoader:documentLoader];
    1695    
     1580
     1581    identifier = [m_client _dispatchIdentifierForInitialRequest:request fromDocumentLoader:m_documentLoader.get()];
     1582    NSURLRequest *newRequest = [m_client _dispatchResource:identifier
     1583        willSendRequest:request redirectResponse:nil fromDocumentLoader:m_documentLoader.get()];
     1584
    16961585    if (newRequest == nil)
    1697         *error = [client _cancelledErrorWithRequest:request];
     1586        error = [m_client _cancelledErrorWithRequest:request];
    16981587    else
    1699         *error = nil;
    1700    
     1588        error = nil;
     1589
    17011590    return newRequest;
    17021591}
    17031592
    1704 - (void)loadRequest:(NSURLRequest *)request
    1705 {
    1706     // FIXME: is this the right place to reset loadType? Perhaps this should be done
    1707     // after loading is finished or aborted.
    1708     [self setLoadType:FrameLoadTypeStandard];
    1709     WebDocumentLoader *dl = [client _createDocumentLoaderWithRequest:request];
    1710     [self loadDocumentLoader:dl];
     1593void FrameLoader::load(NSURLRequest *request)
     1594{
     1595    // FIXME: is this the right place to reset loadType? Perhaps this should be done after loading is finished or aborted.
     1596    m_loadType = FrameLoadTypeStandard;
     1597    WebDocumentLoader *dl = [m_client _createDocumentLoaderWithRequest:request];
     1598    load(dl);
    17111599    [dl release];
    17121600}
    17131601
    1714 - (void)loadRequest:(NSURLRequest *)request inFrameNamed:(NSString *)frameName
    1715 {
    1716     if (frameName == nil) {
    1717         [self loadRequest:request];
    1718         return;
    1719     }
    1720 
    1721     WebCoreFrameBridge *frame = [frameBridge findFrameNamed:frameName];
    1722     if (frame != nil) {
    1723         [[frame frameLoader] loadRequest:request];
    1724         return;
    1725     }
    1726 
    1727     NSDictionary *action = [self actionInformationForNavigationType:NavigationTypeOther
    1728         event:nil originalURL:[request URL]];
    1729     [self checkNewWindowPolicyForRequest:request action:action frameName:frameName formState:nil
    1730         andCall:self withSelector:@selector(continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
    1731 }
    1732 
    1733 - (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target
    1734     data:(NSArray *)postData contentType:(NSString *)contentType
    1735     triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values
     1602void FrameLoader::load(NSURLRequest *request, NSString *frameName)
     1603{
     1604    if (!frameName) {
     1605        load(request);
     1606        return;
     1607    }
     1608
     1609    Frame* frame = m_frame->tree()->find(frameName);
     1610    if (frame) {
     1611        [Mac(frame)->bridge() frameLoader]->load(request);
     1612        return;
     1613    }
     1614
     1615    NSDictionary *action = actionInformation(NavigationTypeOther, nil, [request URL]);
     1616    checkNewWindowPolicy(request, action, frameName, 0);
     1617}
     1618
     1619void FrameLoader::post(NSURL *URL, NSString *referrer, NSString *target, NSArray *postData,
     1620    NSString *contentType, NSEvent *event, DOMElement *form, NSDictionary *formValues)
    17361621{
    17371622    // When posting, use the NSURLRequestReloadIgnoringCacheData load flag.
     
    17421627
    17431628    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];
    1744     [self addExtraFieldsToRequest:request mainResource:YES alwaysFromRequest:YES];
     1629    addExtraFieldsToRequest(request, true, true);
    17451630
    17461631    setHTTPReferrer(request, referrer);
     
    17491634    [request setValue:contentType forHTTPHeaderField:@"Content-Type"];
    17501635
    1751     NSDictionary *action = [self actionInformationForLoadType:FrameLoadTypeStandard isFormSubmission:YES event:event originalURL:URL];
     1636    NSDictionary *action = actionInformation(FrameLoadTypeStandard, true, event, URL);
    17521637    RefPtr<FormState> formState;
    1753     if (form && values)
    1754         formState = FormState::create(form, values, frameBridge);
     1638    if (form && formValues)
     1639        formState = FormState::create(form, formValues, bridge());
    17551640
    17561641    if (target != nil) {
    1757         WebCoreFrameBridge *targetFrame = [frameBridge findFrameNamed:target];
    1758         if (targetFrame != nil)
    1759             [[targetFrame frameLoader] _loadRequest:request triggeringAction:action loadType:FrameLoadTypeStandard formState:formState.release()];
     1642        Frame* targetFrame = m_frame->tree()->find(target);
     1643        if (targetFrame)
     1644            [Mac(targetFrame)->bridge() frameLoader]->load(request, action, FrameLoadTypeStandard, formState.release());
    17601645        else
    1761             [self checkNewWindowPolicyForRequest:request action:action frameName:target formState:formState.release()
    1762                 andCall:self withSelector:@selector(continueLoadRequestAfterNewWindowPolicy:frameName:formState:)];
     1646            checkNewWindowPolicy(request, action, target, formState.release());
    17631647    } else
    1764         [self _loadRequest:request triggeringAction:action loadType:FrameLoadTypeStandard formState:formState.release()];
     1648        load(request, action, FrameLoadTypeStandard, formState.release());
    17651649
    17661650    [request release];
    17671651}
    17681652
    1769 - (void)detachChildren
    1770 {
    1771     // FIXME: is it really necessary to do this in reverse order any more?
    1772     WebCoreFrameBridge *child = [frameBridge lastChild];
    1773     WebCoreFrameBridge *prev = [child previousSibling];
    1774     for (; child; child = prev, prev = [child previousSibling])
    1775         [[child frameLoader] detachFromParent];
    1776 }
    1777 
    1778 - (void)detachFromParent
    1779 {
    1780     WebCoreFrameBridge *bridge = [frameBridge retain];
     1653void FrameLoader::detachChildren()
     1654{
     1655    // FIXME: Is it really necessary to do this in reverse order?
     1656    Frame* previous;
     1657    for (Frame* child = m_frame->tree()->lastChild(); child; child = previous) {
     1658        previous = child->tree()->previousSibling();
     1659        [Mac(child)->bridge() frameLoader]->detachFromParent();
     1660    }
     1661}
     1662
     1663void FrameLoader::detachFromParent()
     1664{
     1665    WebCoreFrameBridge *bridge = [FrameLoader::bridge() retain];
     1666    id <WebFrameLoaderClient> client = [m_client retain];
    17811667
    17821668    [bridge closeURL];
    1783     [self stopLoading];
     1669    stopLoading();
    17841670    [client _detachedFromParent1];
    1785     [self detachChildren];
     1671    detachChildren();
    17861672    [client _detachedFromParent2];
    1787     [self setDocumentLoader:nil];
     1673    setDocumentLoader(nil);
    17881674    [client _detachedFromParent3];
    1789     [[frameBridge parent] removeChild:bridge];
    1790 
    1791     id<WebFrameLoaderClient> c = [client retain];
     1675    if (Frame* parent = m_frame->tree()->parent())
     1676        parent->tree()->removeChild(m_frame);
    17921677    [bridge close];
    1793     [c _detachedFromParent4];
    1794     [c release];
    1795 
     1678    [client _detachedFromParent4];
     1679
     1680    [client release];
    17961681    [bridge release];
    17971682}
    17981683
    1799 - (void)addExtraFieldsToRequest:(NSMutableURLRequest *)request mainResource:(BOOL)mainResource alwaysFromRequest:(BOOL)f
    1800 {
    1801     [request setValue:[frameBridge userAgentForURL:[request URL]] forHTTPHeaderField:@"User-Agent"];
    1802    
    1803     if ([self loadType] == FrameLoadTypeReload)
     1684void FrameLoader::addExtraFieldsToRequest(NSMutableURLRequest *request, bool mainResource, bool alwaysFromRequest)
     1685{
     1686    [request setValue:[bridge() userAgentForURL:[request URL]] forHTTPHeaderField:@"User-Agent"];
     1687   
     1688    if (m_loadType == FrameLoadTypeReload)
    18041689        [request setValue:@"max-age=0" forHTTPHeaderField:@"Cache-Control"];
    18051690   
    18061691    // Don't set the cookie policy URL if it's already been set.
    18071692    if ([request mainDocumentURL] == nil) {
    1808         if (mainResource && ([self isLoadingMainFrame] || f))
     1693        if (mainResource && (isLoadingMainFrame() || alwaysFromRequest))
    18091694            [request setMainDocumentURL:[request URL]];
    18101695        else
    1811             [request setMainDocumentURL:[client _mainFrameURL]];
     1696            [request setMainDocumentURL:[m_client _mainFrameURL]];
    18121697    }
    18131698   
     
    18161701}
    18171702
    1818 - (void)safeLoadURL:(NSURL *)URL
    1819 {
    1820    // Call the bridge because this is where our security checks are made.
    1821     [frameBridge loadURL:URL
    1822                   referrer:urlOriginalDataAsString([[documentLoader request] URL])
    1823                     reload:NO
    1824                userGesture:YES       
    1825                     target:nil
    1826            triggeringEvent:[NSApp currentEvent]
    1827                       form:nil
    1828                 formValues:nil];
    1829 }
    1830 
    1831 - (NSDictionary *)actionInformationForLoadType:(FrameLoadType)type isFormSubmission:(BOOL)isFormSubmission event:(NSEvent *)event originalURL:(NSURL *)URL
     1703void FrameLoader::safeLoad(NSURL *URL)
     1704{
     1705    [bridge() loadURL:URL
     1706             referrer:urlOriginalDataAsString([[m_documentLoader.get() request] URL])
     1707               reload:NO
     1708          userGesture:YES       
     1709               target:nil
     1710      triggeringEvent:[NSApp currentEvent]
     1711                 form:nil
     1712           formValues:nil];
     1713}
     1714
     1715NSDictionary *FrameLoader::actionInformation(FrameLoadType type, bool isFormSubmission, NSEvent *event, NSURL *originalURL)
    18321716{
    18331717    NavigationType navType;
    1834     if (isFormSubmission) {
     1718    if (isFormSubmission)
    18351719        navType = NavigationTypeFormSubmitted;
    1836     } else if (event == nil) {
    1837         if (type == FrameLoadTypeReload)
    1838             navType = NavigationTypeReload;
    1839         else if (isBackForwardLoadType(type))
    1840             navType = NavigationTypeBackForward;
    1841         else
    1842             navType = NavigationTypeOther;
    1843     } else {
     1720    else if (event)
    18441721        navType = NavigationTypeLinkClicked;
    1845     }
    1846     return [self actionInformationForNavigationType:navType event:event originalURL:URL];
     1722    else if (type == FrameLoadTypeReload)
     1723        navType = NavigationTypeReload;
     1724    else if (isBackForwardLoadType(type))
     1725        navType = NavigationTypeBackForward;
     1726    else
     1727        navType = NavigationTypeOther;
     1728    return actionInformation(navType, event, originalURL);
    18471729}
    18481730 
    1849 NSString *ActionNavigationTypeKey = @"WebActionNavigationTypeKey";
    1850 NSString *ActionElementKey = @"WebActionElementKey";
    1851 NSString *ActionButtonKey = @"WebActionButtonKey";
    1852 NSString *ActionModifierFlagsKey = @"WebActionModifierFlagsKey";
    1853 NSString *ActionOriginalURLKey = @"WebActionOriginalURLKey";
    1854 
    1855 - (NSDictionary *)actionInformationForNavigationType:(NavigationType)navigationType event:(NSEvent *)event originalURL:(NSURL *)URL
    1856 {
    1857     NSDictionary *elementInfo = [client _elementForEvent:event];
     1731NSDictionary *FrameLoader::actionInformation(NavigationType navigationType, NSEvent *event, NSURL *originalURL)
     1732{
     1733    NSString *ActionNavigationTypeKey = @"WebActionNavigationTypeKey";
     1734    NSString *ActionElementKey = @"WebActionElementKey";
     1735    NSString *ActionButtonKey = @"WebActionButtonKey";
     1736    NSString *ActionModifierFlagsKey = @"WebActionModifierFlagsKey";
     1737    NSString *ActionOriginalURLKey = @"WebActionOriginalURLKey";
     1738    NSDictionary *elementInfo = [m_client _elementForEvent:event];
    18581739    if (elementInfo)
    18591740        return [NSDictionary dictionaryWithObjectsAndKeys:
     
    18621743            [NSNumber numberWithInt:[event buttonNumber]], ActionButtonKey,
    18631744            [NSNumber numberWithInt:[event modifierFlags]], ActionModifierFlagsKey,
    1864             URL, ActionOriginalURLKey,
     1745            originalURL, ActionOriginalURLKey,
    18651746            nil];
    18661747    return [NSDictionary dictionaryWithObjectsAndKeys:
    18671748        [NSNumber numberWithInt:navigationType], ActionNavigationTypeKey,
    18681749        [NSNumber numberWithInt:[event modifierFlags]], ActionModifierFlagsKey,
    1869         URL, ActionOriginalURLKey,
     1750        originalURL, ActionOriginalURLKey,
    18701751        nil];
    18711752}
    18721753
    18731754// Called every time a resource is completely loaded, or an error is received.
    1874 - (void)checkLoadComplete
    1875 {
    1876     ASSERT([client _hasWebView]);
    1877 
    1878     WebCoreFrameBridge *parent;
    1879     for (WebCoreFrameBridge *frame = frameBridge; frame; frame = parent) {
    1880         [frame retain];
    1881         [[frame frameLoader] checkLoadCompleteForThisFrame];
    1882         parent = [frame parent];
    1883         [frame release];
    1884     }
    1885 }
    1886 
    1887 - (void)setFrameLoaderClient:(id<WebFrameLoaderClient>)cli
    1888 {
    1889     client = cli;
    1890 }
    1891 
    1892 - (id<WebFrameLoaderClient>)client
    1893 {
    1894     return client;
     1755void FrameLoader::checkLoadComplete()
     1756{
     1757    ASSERT([m_client _hasWebView]);
     1758
     1759    for (RefPtr<Frame> frame = m_frame; frame; frame = frame->tree()->parent())
     1760        [Mac(frame.get())->bridge() frameLoader]->checkLoadCompleteForThisFrame();
     1761}
     1762
     1763void FrameLoader::setFrameLoaderClient(id <WebFrameLoaderClient> client)
     1764{
     1765    m_client = client;
     1766}
     1767
     1768id <WebFrameLoaderClient> FrameLoader::client() const
     1769{
     1770    return m_client;
     1771}
     1772
     1773WebCoreFrameLoaderAsDelegate *FrameLoader::asDelegate()
     1774{
     1775    if (!m_asDelegate) {
     1776        WebCoreFrameLoaderAsDelegate *d = [[WebCoreFrameLoaderAsDelegate alloc] initWithLoader:this];
     1777        m_asDelegate = d;
     1778        [d release];
     1779    }
     1780    return m_asDelegate.get();
     1781}
     1782
     1783}
     1784
     1785@implementation WebCoreFrameLoaderAsDelegate
     1786
     1787- (id)initWithLoader:(FrameLoader*)loader
     1788{
     1789    self = [self init];
     1790    if (!self)
     1791        return nil;
     1792    m_loader = loader;
     1793    return self;
     1794}
     1795
     1796- (void)detachFromLoader
     1797{
     1798    m_loader = 0;
     1799}
     1800
     1801- (void)continueFragmentScrollAfterNavigationPolicy:(NSURLRequest *)request formState:(FormState*)formState
     1802{
     1803    if (m_loader)
     1804        m_loader->continueFragmentScrollAfterNavigationPolicy(request);
     1805}
     1806
     1807- (void)continueAfterNewWindowPolicy:(WebPolicyAction)policy
     1808{
     1809    if (m_loader)
     1810        m_loader->continueAfterNewWindowPolicy(policy);
     1811}
     1812
     1813- (void)continueAfterNavigationPolicy:(WebPolicyAction)policy
     1814{
     1815    if (m_loader)
     1816        m_loader->continueAfterNavigationPolicy(policy);
     1817}
     1818
     1819- (void)continueAfterWillSubmitForm:(WebPolicyAction)policy
     1820{
     1821    if (m_loader)
     1822        m_loader->continueAfterWillSubmitForm(policy);
     1823}
     1824
     1825- (void)continueLoadRequestAfterNavigationPolicy:(NSURLRequest *)request formState:(FormState*)formState
     1826{
     1827    if (m_loader)
     1828        m_loader->continueLoadRequestAfterNavigationPolicy(request, formState);
     1829}
     1830
     1831- (void)continueLoadRequestAfterNewWindowPolicy:(NSURLRequest *)request frameName:(NSString *)frameName formState:(FormState *)formState
     1832{
     1833    if (m_loader)
     1834        m_loader->continueLoadRequestAfterNewWindowPolicy(request, frameName, formState);
    18951835}
    18961836
  • trunk/WebCore/loader/mac/WebLoader.h

    r17206 r17238  
    2929#include "RetainPtr.h"
    3030#include "Shared.h"
     31#include <wtf/RefPtr.h>
    3132
    3233@class NSError;
     
    3536@class NSURLRequest;
    3637@class NSURLResponse;
    37 @class WebFrameLoader;
    38 @class WebCoreResourceLoaderDelegate;
     38@class WebCoreResourceLoaderAsDelegate;
    3939
    4040namespace WebCore {
     41
     42    class Frame;
     43    class FrameLoader;
    4144
    4245    // FIXME: Rename to ResourceLoader after resolving conflict with existing class of that name.
     
    4750        virtual bool load(NSURLRequest *);
    4851
    49         virtual void signalFinish();
     52        FrameLoader *frameLoader() const;
    5053
    51         void setFrameLoader(WebFrameLoader *);
    52         WebFrameLoader *frameLoader() const;
    53 
    54         virtual void cancel();
    55         virtual void cancel(NSError *);
     54        virtual void cancel(NSError * = nil);
    5655        NSError *cancelledError();
    5756
     
    6059
    6160        void setIdentifier(id);
     61        id identifier() const { return m_identifier.get(); }
    6262
    6363        virtual void releaseResources();
     
    8686
    8787    protected:
    88         WebResourceLoader(WebFrameLoader *);
    89         WebCoreResourceLoaderDelegate *delegate();
     88        WebResourceLoader(Frame*);
     89        WebCoreResourceLoaderAsDelegate *delegate();
    9090        virtual void releaseDelegate();
     91
     92        virtual void didCancel(NSError *);
     93        void didFinishLoadingOnePart();
    9194
    9295        NSURLConnection *connection() const { return m_connection.get(); }
    9396        NSURLRequest *request() const { return m_request.get(); }
    9497        bool reachedTerminalState() const { return m_reachedTerminalState; }
    95         bool signalledFinish() const { return m_signalledFinish; }
    9698        bool cancelled() const { return m_cancelled; }
    97         id identifier() const { return m_identifier.get(); }
    9899
    99100        RetainPtr<NSURLConnection> m_connection;
     
    102103        RetainPtr<NSURLRequest> m_request;
    103104        bool m_reachedTerminalState;
    104         bool m_signalledFinish;
    105105        bool m_cancelled;
     106        bool m_calledDidFinishLoad;
    106107
    107         RetainPtr<WebFrameLoader> m_frameLoader;
     108        RefPtr<Frame> m_frame;
    108109        RetainPtr<id> m_identifier;
    109110        RetainPtr<NSURLResponse> m_response;
     
    113114        RetainPtr<NSURL> m_originalURL;
    114115        RetainPtr<NSMutableData> m_resourceData;
    115         RetainPtr<WebCoreResourceLoaderDelegate> m_delegate;
     116        RetainPtr<WebCoreResourceLoaderAsDelegate> m_delegate;
    116117    };
    117118
  • trunk/WebCore/loader/mac/WebLoader.mm

    r17206 r17238  
    3030#import "WebLoader.h"
    3131
     32#import "FrameMac.h"
     33#import "WebCoreFrameBridge.h"
    3234#import "WebCoreSystemInterface.h"
    3335#import "WebDataProtocol.h"
     
    4244using namespace WebCore;
    4345
    44 @interface WebCoreResourceLoaderDelegate : NSObject <NSURLAuthenticationChallengeSender>
     46@interface WebCoreResourceLoaderAsDelegate : NSObject <NSURLAuthenticationChallengeSender>
    4547{
    4648    WebResourceLoader* m_loader;
     
    6769#endif
    6870
    69 WebResourceLoader::WebResourceLoader(WebFrameLoader *frameLoader)
     71WebResourceLoader::WebResourceLoader(Frame* frame)
    7072    : m_reachedTerminalState(false)
    71     , m_signalledFinish(false)
    7273    , m_cancelled(false)
    73     , m_frameLoader(frameLoader)
     74    , m_calledDidFinishLoad(false)
     75    , m_frame(frame)
    7476    , m_currentConnectionChallenge(nil)
    75     , m_defersCallbacks([frameLoader defersCallbacks])
     77    , m_defersCallbacks(frameLoader()->defersCallbacks())
    7678{
    7779    static bool initialized = false;
     
    98100    RefPtr<WebResourceLoader> protector(this);
    99101
     102    m_frame = 0;
     103
    100104    // We need to set reachedTerminalState to true before we release
    101105    // the resources to prevent a double dealloc of WebView <rdar://problem/4372628>
     
    104108    m_identifier = nil;
    105109    m_connection = nil;
    106     m_frameLoader = nil;
    107110    m_resourceData = nil;
    108111
     
    113116{
    114117    ASSERT(m_connection == nil);
    115     ASSERT(![m_frameLoader.get() archiveLoadPendingForLoader:this]);
     118    ASSERT(!frameLoader()->isArchiveLoadPending(this));
    116119   
    117120    m_originalURL = [r URL];
     
    119122    NSURLRequest *clientRequest = willSendRequest(r, nil);
    120123    if (clientRequest == nil) {
    121         didFail([m_frameLoader.get() cancelledErrorWithRequest:r]);
     124        didFail(frameLoader()->cancelledError(r));
    122125        return false;
    123126    }
    124127    r = clientRequest;
    125128   
    126     if ([m_frameLoader.get() willUseArchiveForRequest:r originalURL:m_originalURL.get() loader:this])
     129    if (frameLoader()->willUseArchive(this, r, m_originalURL.get()))
    127130        return true;
    128131   
     
    153156}
    154157
    155 void WebResourceLoader::setFrameLoader(WebFrameLoader *fl)
    156 {
    157     ASSERT(fl);
    158     m_frameLoader = fl;
    159     setDefersCallbacks([fl defersCallbacks]);
    160 }
    161 
    162 WebFrameLoader *WebResourceLoader::frameLoader() const
    163 {
    164     return m_frameLoader.get();
     158FrameLoader* WebResourceLoader::frameLoader() const
     159{
     160    if (!m_frame)
     161        return 0;
     162    return [Mac(m_frame.get())->bridge() frameLoader];
    165163}
    166164
     
    225223        haveDataSchemeRequest = true;
    226224   
    227     if (!m_identifier) {
    228         id identifier = [m_frameLoader.get() _identifierForInitialRequest:clientRequest];
    229         m_identifier = identifier;
    230         [identifier release];
    231     }
    232 
    233     NSURLRequest *updatedRequest = [m_frameLoader.get() _willSendRequest:clientRequest
    234         forResource:m_identifier.get() redirectResponse:redirectResponse];
     225    if (!m_identifier)
     226        m_identifier = frameLoader()->identifierForInitialRequest(clientRequest);
     227
     228    NSURLRequest *updatedRequest = frameLoader()->willSendRequest(this, clientRequest, redirectResponse);
    235229
    236230    if (!haveDataSchemeRequest)
     
    279273    m_currentWebChallenge = webChallenge;
    280274
    281     [m_frameLoader.get() _didReceiveAuthenticationChallenge:webChallenge forResource:m_identifier.get()];
     275    frameLoader()->didReceiveAuthenticationChallenge(this, webChallenge);
    282276
    283277    [webChallenge release];
     
    295289    RefPtr<WebResourceLoader> protector(this);
    296290
    297     [m_frameLoader.get() _didCancelAuthenticationChallenge:m_currentWebChallenge.get()
    298         forResource:m_identifier.get()];
     291    frameLoader()->didCancelAuthenticationChallenge(this, m_currentWebChallenge.get());
    299292}
    300293
     
    315308    m_response = r;
    316309
    317     [m_frameLoader.get() _didReceiveResponse:r forResource:m_identifier.get()];
     310    frameLoader()->didReceiveResponse(this, r);
    318311}
    319312
     
    329322    // anything including possibly derefing this; one example of this is Radar 3266216.
    330323    RefPtr<WebResourceLoader> protector(this);
    331    
     324
    332325    addData(data, allAtOnce);
    333    
    334     [m_frameLoader.get() _didReceiveData:data contentLength:(int)lengthReceived forResource:m_identifier.get()];
     326    if (m_frame)
     327        frameLoader()->didReceiveData(this, data, lengthReceived);
    335328}
    336329
     
    343336}
    344337
    345 void WebResourceLoader::signalFinish()
    346 {
    347     m_signalledFinish = true;
    348     [m_frameLoader.get() _didFinishLoadingForResource:m_identifier.get()];
    349 }
    350 
    351338void WebResourceLoader::didFinishLoading()
    352339{
    353340    // If load has been cancelled after finishing (which could happen with a
    354     // javascript that changes the window location), do nothing.
     341    // JavaScript that changes the window location), do nothing.
    355342    if (m_cancelled)
    356343        return;
    357    
    358     ASSERT(!m_reachedTerminalState);
    359 
    360     if (!m_signalledFinish)
    361         signalFinish();
    362 
     344    ASSERT(!m_reachedTerminalState);
     345
     346    didFinishLoadingOnePart();
    363347    releaseResources();
    364348}
    365349
     350void WebResourceLoader::didFinishLoadingOnePart()
     351{
     352    if (m_cancelled)
     353        return;
     354    ASSERT(!m_reachedTerminalState);
     355
     356    if (m_calledDidFinishLoad)
     357        return;
     358    m_calledDidFinishLoad = true;
     359    frameLoader()->didFinishLoad(this);
     360}
     361
    366362void WebResourceLoader::didFail(NSError *error)
    367363{
    368364    if (m_cancelled)
    369365        return;
    370    
    371366    ASSERT(!m_reachedTerminalState);
    372367
     
    375370    RefPtr<WebResourceLoader> protector(this);
    376371
    377     [m_frameLoader.get() _didFailLoadingWithError:error forResource:m_identifier.get()];
     372    frameLoader()->didFailToLoad(this, error);
    378373
    379374    releaseResources();
     
    383378{
    384379    // When in private browsing mode, prevent caching to disk
    385     if ([cachedResponse storagePolicy] == NSURLCacheStorageAllowed && [m_frameLoader.get() _privateBrowsingEnabled]) {
     380    if ([cachedResponse storagePolicy] == NSURLCacheStorageAllowed && frameLoader()->privateBrowsingEnabled())
    386381        cachedResponse = [[[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response]
    387382                                                                   data:[cachedResponse data]
    388383                                                               userInfo:[cachedResponse userInfo]
    389384                                                          storagePolicy:NSURLCacheStorageAllowedInMemoryOnly] autorelease];
    390     }
    391385    return cachedResponse;
    392386}
    393387
    394 void WebResourceLoader::cancel(NSError *error)
    395 {
     388void WebResourceLoader::didCancel(NSError *error)
     389{
     390    ASSERT(!m_cancelled);
    396391    ASSERT(!m_reachedTerminalState);
    397392
     
    406401    m_currentWebChallenge = nil;
    407402
    408     [m_frameLoader.get() cancelPendingArchiveLoadForLoader:this];
     403    frameLoader()->cancelPendingArchiveLoad(this);
    409404    [m_connection.get() cancel];
    410405
    411     [m_frameLoader.get() _didFailLoadingWithError:error forResource:m_identifier.get()];
     406    frameLoader()->didFailToLoad(this, error);
    412407
    413408    releaseResources();
    414409}
    415410
    416 void WebResourceLoader::cancel()
    417 {
    418     if (!m_reachedTerminalState)
    419         cancel(cancelledError());
     411void WebResourceLoader::cancel(NSError *error)
     412{
     413    if (m_reachedTerminalState)
     414        return;
     415    if (error)
     416        didCancel(error);
     417    else
     418        didCancel(cancelledError());
    420419}
    421420
     
    437436NSError *WebResourceLoader::cancelledError()
    438437{
    439     return [m_frameLoader.get() cancelledErrorWithRequest:m_request.get()];
     438    return frameLoader()->cancelledError(m_request.get());
    440439}
    441440
     
    472471}
    473472
    474 WebCoreResourceLoaderDelegate *WebResourceLoader::delegate()
     473WebCoreResourceLoaderAsDelegate *WebResourceLoader::delegate()
    475474{
    476475    if (!m_delegate) {
    477         WebCoreResourceLoaderDelegate *d = [[WebCoreResourceLoaderDelegate alloc] initWithLoader:this];
     476        WebCoreResourceLoaderAsDelegate *d = [[WebCoreResourceLoaderAsDelegate alloc] initWithLoader:this];
    478477        m_delegate = d;
    479478        [d release];
     
    492491}
    493492
    494 @implementation WebCoreResourceLoaderDelegate
     493@implementation WebCoreResourceLoaderAsDelegate
    495494
    496495- (id)initWithLoader:(WebResourceLoader*)loader
  • trunk/WebCore/loader/mac/WebMainResourceLoader.h

    r17206 r17238  
    3131#import <wtf/Forward.h>
    3232
    33 @class WebCoreMainResourceLoaderPolicyDelegate;
     33@class WebCoreMainResourceLoaderAsPolicyDelegate;
    3434
    3535namespace WebCore {
     
    3737    class MainResourceLoader : public WebResourceLoader {
    3838    public:
    39         static PassRefPtr<MainResourceLoader> create(WebFrameLoader *);
     39        static PassRefPtr<MainResourceLoader> create(Frame*);
    4040
    4141        virtual ~MainResourceLoader();
    4242
    4343        virtual bool load(NSURLRequest *);
    44 
    45         using WebResourceLoader::cancel;
    46         virtual void cancel(NSError *);
    4744
    4845        virtual void setDefersCallbacks(bool);
     
    6057
    6158    private:
    62         MainResourceLoader(WebFrameLoader *);
     59        virtual void didCancel(NSError *);
     60
     61        MainResourceLoader(Frame*);
    6362
    6463        virtual void releaseDelegate();
    6564
    66         WebCoreMainResourceLoaderPolicyDelegate *policyDelegate();
     65        WebCoreMainResourceLoaderAsPolicyDelegate *policyDelegate();
    6766        void releasePolicyDelegate();
    6867
     
    8180        RetainPtr<id> m_proxy;
    8281        RetainPtr<NSURLRequest> m_initialRequest;
    83         RetainPtr<WebCoreMainResourceLoaderPolicyDelegate> m_policyDelegate;
     82        RetainPtr<WebCoreMainResourceLoaderAsPolicyDelegate> m_policyDelegate;
    8483        bool m_loadingMultipartContent;
    8584    };
  • trunk/WebCore/loader/mac/WebMainResourceLoader.mm

    r17206 r17238  
    3939#import <wtf/Assertions.h>
    4040#import <wtf/PassRefPtr.h>
     41#import <wtf/Vector.h>
    4142
    4243// FIXME: More that is in common with SubresourceLoader should move up into WebResourceLoader.
     
    4445using namespace WebCore;
    4546
    46 @interface WebCoreMainResourceLoaderPolicyDelegate : NSObject
     47@interface WebCoreMainResourceLoaderAsPolicyDelegate : NSObject
    4748{
    4849    MainResourceLoader* m_loader;
     
    5657const size_t URLBufferLength = 2048;
    5758
    58 MainResourceLoader::MainResourceLoader(WebFrameLoader *fl)
    59     : WebResourceLoader(fl)
     59MainResourceLoader::MainResourceLoader(Frame* frame)
     60    : WebResourceLoader(frame)
    6061    , m_contentLength(0)
    6162    , m_bytesReceived(0)
     
    7879}
    7980
    80 PassRefPtr<MainResourceLoader> MainResourceLoader::create(WebFrameLoader *fl)
    81 {
    82     return new MainResourceLoader(fl);
     81PassRefPtr<MainResourceLoader> MainResourceLoader::create(Frame* frame)
     82{
     83    return new MainResourceLoader(frame);
    8384}
    8485
    8586void MainResourceLoader::receivedError(NSError *error)
    8687{
    87     // Calling _receivedMainResourceError will likely result in the last reference to this object to go away.
    88     RefPtr<MainResourceLoader> protect(this);
    89 
    90     WebFrameLoader *fl = [frameLoader() retain]; // WebResourceLoader::didFailWithError will release the frameLoader
     88    // Calling receivedMainResourceError will likely result in the last reference to this object to go away.
     89    RefPtr<MainResourceLoader> protect(this);
    9190
    9291    if (!cancelled()) {
    9392        ASSERT(!reachedTerminalState());
    94         [fl _didFailLoadingWithError:error forResource:identifier()];
    95     }
    96 
    97     [fl _receivedMainResourceError:error complete:YES];
     93        frameLoader()->didFailToLoad(this, error);
     94    }
     95
     96    frameLoader()->receivedMainResourceError(error, true);
    9897
    9998    if (!cancelled())
     
    101100
    102101    ASSERT(reachedTerminalState());
    103 
    104     [fl release];
    105 }
    106 
    107 void MainResourceLoader::cancel(NSError *error)
    108 {
    109     // Calling _receivedMainResourceError will likely result in the last reference to this class to go away.
    110     RefPtr<MainResourceLoader> protect(this);
    111 
    112     [frameLoader() cancelContentPolicy];
    113     [frameLoader() retain];
    114     [frameLoader() _receivedMainResourceError:error complete:YES];
    115     [frameLoader() release];
    116 
    117     WebResourceLoader::cancel(error);
     102}
     103
     104void MainResourceLoader::didCancel(NSError *error)
     105{
     106    // Calling receivedMainResourceError will likely result in the last reference to this object to go away.
     107    RefPtr<MainResourceLoader> protect(this);
     108
     109    frameLoader()->cancelContentPolicyCheck();
     110    frameLoader()->receivedMainResourceError(error, true);
     111    WebResourceLoader::didCancel(error);
    118112}
    119113
    120114NSError *MainResourceLoader::interruptionForPolicyChangeError() const
    121115{
    122     return [frameLoader() interruptForPolicyChangeErrorWithRequest:request()];
     116    return frameLoader()->interruptionForPolicyChangeError(request());
    123117}
    124118
     
    142136        int status = [(NSHTTPURLResponse *)redirectResponse statusCode];
    143137        if (((status >= 301 && status <= 303) || status == 307)
    144                 && [[[frameLoader() initialRequest] HTTPMethod] isEqualToString:@"POST"])
     138                && [[frameLoader()->initialRequest() HTTPMethod] isEqualToString:@"POST"])
    145139            return true;
    146140    }
     
    152146{
    153147    WebResourceLoader::addData(data, allAtOnce);
    154     [frameLoader() _receivedData:data];
     148    frameLoader()->receivedData(data);
    155149}
    156150
     
    172166    // Update cookie policy base URL as URL changes, except for subframes, which use the
    173167    // URL of the main frame which doesn't change when we redirect.
    174     if ([frameLoader() isLoadingMainFrame]) {
     168    if (frameLoader()->isLoadingMainFrame()) {
    175169        mutableRequest = [newRequest mutableCopy];
    176170        [mutableRequest setMainDocumentURL:URL];
     
    195189
    196190    // Don't set this on the first request. It is set when the main load was started.
    197     [frameLoader() _setRequest:newRequest];
    198 
    199     [frameLoader() _checkNavigationPolicyForRequest:newRequest
    200         andCall:policyDelegate() withSelector:@selector(continueAfterNavigationPolicy:formState:)];
     191    frameLoader()->setRequest(newRequest);
     192
     193    frameLoader()->checkNavigationPolicy(newRequest, policyDelegate(), @selector(continueAfterNavigationPolicy:formState:));
    201194
    202195    return newRequest;
     
    232225        bool isRemote = ![URL isFileURL] && ![WebDataProtocol _webIsDataProtocolURL:URL];
    233226        bool isRemoteWebArchive = isRemote && isCaseInsensitiveEqual(@"application/x-webarchive", MIMEType);
    234         if (![frameLoader() _canShowMIMEType:MIMEType] || isRemoteWebArchive) {
    235             [frameLoader() cannotShowMIMETypeWithResponse:r];
     227        if (!frameLoader()->canShowMIMEType(MIMEType) || isRemoteWebArchive) {
     228            frameLoader()->cannotShowMIMEType(r);
    236229            // Check reachedTerminalState since the load may have already been cancelled inside of _handleUnimplementablePolicyWithErrorCode::.
    237230            if (!reachedTerminalState())
     
    241234        break;
    242235    }
     236
    243237    case WebPolicyDownload:
    244238        [m_proxy.get() setDelegate:nil];
    245         [frameLoader() _downloadWithLoadingConnection:connection() request:request() response:r proxy:m_proxy.get()];
     239        frameLoader()->download(connection(), request(), r, m_proxy.get());
    246240        m_proxy = nil;
    247241        receivedError(interruptionForPolicyChangeError());
     
    261255        int status = [(NSHTTPURLResponse *)r statusCode];
    262256        if (status < 200 || status >= 300) {
    263             bool hostedByObject = [frameLoader() isHostedByObjectElement];
    264 
    265             [frameLoader() _handleFallbackContent];
     257            bool hostedByObject = frameLoader()->isHostedByObjectElement();
     258
     259            frameLoader()->handleFallbackContent();
    266260            // object elements are no longer rendered after we fallback, so don't
    267261            // keep trying to process data from their load
     
    276270        WebResourceLoader::didReceiveResponse(r);
    277271
    278     if (![frameLoader() _isStopping] && (shouldLoadAsEmptyDocument(URL) || [frameLoader() _representationExistsForURLScheme:[URL scheme]]))
     272    if (frameLoader() && !frameLoader()->isStopping() && (shouldLoadAsEmptyDocument(URL) || frameLoader()->representationExistsForURLScheme([URL scheme])))
    279273        didFinishLoading();
    280274}
     
    282276void MainResourceLoader::continueAfterContentPolicy(WebPolicyAction policy)
    283277{
    284     bool isStopping = [frameLoader() _isStopping];
    285     [frameLoader() cancelContentPolicy];
     278    bool isStopping = frameLoader()->isStopping();
     279    frameLoader()->cancelContentPolicyCheck();
    286280    if (!isStopping)
    287281        continueAfterContentPolicy(policy, m_response.get());
     
    291285{
    292286    ASSERT(shouldLoadAsEmptyDocument([r URL]) || !defersCallbacks());
    293     ASSERT(shouldLoadAsEmptyDocument([r URL]) || ![frameLoader() defersCallbacks]);
     287    ASSERT(shouldLoadAsEmptyDocument([r URL]) || !frameLoader()->defersCallbacks());
    294288
    295289    if (m_loadingMultipartContent) {
    296         [frameLoader() _setupForReplaceByMIMEType:[r MIMEType]];
     290        frameLoader()->setupForReplaceByMIMEType([r MIMEType]);
    297291        clearResourceData();
    298292    }
     
    305299    RefPtr<MainResourceLoader> protect(this);
    306300
    307     [frameLoader() _setResponse:r];
     301    frameLoader()->setResponse(r);
    308302    m_contentLength = (int)[r expectedContentLength];
    309303
    310304    m_response = r;
    311     [frameLoader() _checkContentPolicyForMIMEType:[m_response.get() MIMEType]
    312         andCall:policyDelegate() withSelector:@selector(continueAfterContentPolicy:)];
     305    frameLoader()->checkContentPolicy([m_response.get() MIMEType], policyDelegate(), @selector(continueAfterContentPolicy:));
    313306}
    314307
     
    318311    ASSERT([data length] != 0);
    319312    ASSERT(!defersCallbacks());
    320     ASSERT(![frameLoader() defersCallbacks]);
     313    ASSERT(!frameLoader()->defersCallbacks());
    321314 
    322315    // The additional processing can do anything including possibly removing the last
     
    330323void MainResourceLoader::didFinishLoading()
    331324{
    332     ASSERT(shouldLoadAsEmptyDocument([frameLoader() _URL]) || !defersCallbacks());
    333     ASSERT(shouldLoadAsEmptyDocument([frameLoader() _URL]) || ![frameLoader() defersCallbacks]);
     325    ASSERT(shouldLoadAsEmptyDocument(frameLoader()->URL()) || !defersCallbacks());
     326    ASSERT(shouldLoadAsEmptyDocument(frameLoader()->URL()) || !frameLoader()->defersCallbacks());
    334327
    335328    // The additional processing can do anything including possibly removing the last
     
    337330    RefPtr<MainResourceLoader> protect(this);
    338331
    339     [frameLoader() _finishedLoading];
     332    frameLoader()->finishedLoading();
    340333    WebResourceLoader::didFinishLoading();
    341334}
     
    344337{
    345338    ASSERT(!defersCallbacks());
    346     ASSERT(![frameLoader() defersCallbacks]);
     339    ASSERT(!frameLoader()->defersCallbacks());
    347340
    348341    receivedError(error);
     
    355348    ASSERT(!connection());
    356349    ASSERT(shouldLoadEmptyBeforeRedirect || !defersCallbacks());
    357     ASSERT(shouldLoadEmptyBeforeRedirect || ![frameLoader() defersCallbacks]);
     350    ASSERT(shouldLoadEmptyBeforeRedirect || !frameLoader()->defersCallbacks());
    358351
    359352    // Send this synthetic delegate callback since clients expect it, and
     
    367360        return r;
    368361
    369     if (shouldLoadEmpty || [frameLoader() _representationExistsForURLScheme:[URL scheme]]) {
     362    if (shouldLoadEmpty || frameLoader()->representationExistsForURLScheme([URL scheme])) {
    370363        NSString *MIMEType;
    371364        if (shouldLoadEmpty)
    372365            MIMEType = @"text/html";
    373366        else
    374             MIMEType = [frameLoader() _generatedMIMETypeForURLScheme:[URL scheme]];
     367            MIMEType = frameLoader()->generatedMIMETypeForURLScheme([URL scheme]);
    375368
    376369        NSURLResponse *resp = [[NSURLResponse alloc] initWithURL:URL MIMEType:MIMEType
     
    426419}
    427420
    428 WebCoreMainResourceLoaderPolicyDelegate *MainResourceLoader::policyDelegate()
     421WebCoreMainResourceLoaderAsPolicyDelegate *MainResourceLoader::policyDelegate()
    429422{
    430423    if (!m_policyDelegate) {
    431         WebCoreMainResourceLoaderPolicyDelegate *d = [[WebCoreMainResourceLoaderPolicyDelegate alloc] initWithLoader:this];
     424        WebCoreMainResourceLoaderAsPolicyDelegate *d = [[WebCoreMainResourceLoaderAsPolicyDelegate alloc] initWithLoader:this];
    432425        m_policyDelegate = d;
    433426        [d release];
     
    446439}
    447440
    448 @implementation WebCoreMainResourceLoaderPolicyDelegate
     441@implementation WebCoreMainResourceLoaderAsPolicyDelegate
    449442
    450443- (id)initWithLoader:(MainResourceLoader*)loader
  • trunk/WebCore/loader/mac/WebNetscapePlugInStreamLoader.h

    r17206 r17238  
    3535    class NetscapePlugInStreamLoader : public WebResourceLoader {
    3636    public:
    37         static PassRefPtr<NetscapePlugInStreamLoader> create(WebFrameLoader*, id <WebPlugInStreamLoaderDelegate>);
     37        static PassRefPtr<NetscapePlugInStreamLoader> create(Frame*, id <WebPlugInStreamLoaderDelegate>);
    3838        virtual ~NetscapePlugInStreamLoader();
    3939
     
    4444        virtual void didFinishLoading();
    4545        virtual void didFail(NSError *);
    46         virtual void cancel(NSError *);
    4746
    4847        virtual void releaseResources();
    4948
    5049    private:
    51         NetscapePlugInStreamLoader(WebFrameLoader*, id <WebPlugInStreamLoaderDelegate>);
     50        NetscapePlugInStreamLoader(Frame*, id <WebPlugInStreamLoaderDelegate>);
     51
     52        virtual void didCancel(NSError *);
    5253
    5354        RetainPtr<id <WebPlugInStreamLoaderDelegate> > m_stream;
  • trunk/WebCore/loader/mac/WebNetscapePlugInStreamLoader.mm

    r17206 r17238  
    3535namespace WebCore {
    3636
    37 NetscapePlugInStreamLoader::NetscapePlugInStreamLoader(WebFrameLoader *fl, id <WebPlugInStreamLoaderDelegate> stream)
    38     : WebResourceLoader(fl)
     37NetscapePlugInStreamLoader::NetscapePlugInStreamLoader(Frame* frame, id <WebPlugInStreamLoaderDelegate> stream)
     38    : WebResourceLoader(frame)
    3939    , m_stream(stream)
    4040{
     
    4545}
    4646
    47 PassRefPtr<NetscapePlugInStreamLoader> NetscapePlugInStreamLoader::create(WebFrameLoader* fl, id <WebPlugInStreamLoaderDelegate> d)
     47PassRefPtr<NetscapePlugInStreamLoader> NetscapePlugInStreamLoader::create(Frame* frame, id <WebPlugInStreamLoaderDelegate> d)
    4848{
    49     return new NetscapePlugInStreamLoader(fl, d);
     49    return new NetscapePlugInStreamLoader(frame, d);
    5050}
    5151
     
    7878    if ([theResponse isKindOfClass:[NSHTTPURLResponse class]] &&
    7979        ([(NSHTTPURLResponse *)theResponse statusCode] >= 400 || [(NSHTTPURLResponse *)theResponse statusCode] < 100)) {
    80         NSError *error = [frameLoader() fileDoesNotExistErrorWithResponse:theResponse];
     80        NSError *error = frameLoader()->fileDoesNotExistError(theResponse);
    8181        [m_stream.get() cancelLoadAndDestroyStreamWithError:error];
    8282    }
     
    9999    RefPtr<NetscapePlugInStreamLoader> protect(this);
    100100
    101     [frameLoader() removePlugInStreamLoader:this];
    102     [frameLoader() _finishedLoadingResource];
     101    frameLoader()->removePlugInStreamLoader(this);
    103102    [m_stream.get() finishedLoadingWithData:resourceData()];
    104103    WebResourceLoader::didFinishLoading();
     
    110109    // anything including possibly getting rid of the last reference to this object.
    111110    // One example of this is Radar 3266216.
     111    RefPtr<NetscapePlugInStreamLoader> protect(this);
    112112
    113     [frameLoader() removePlugInStreamLoader:this];
    114     [frameLoader() _receivedError:error];
     113    frameLoader()->removePlugInStreamLoader(this);
    115114    [m_stream.get() destroyStreamWithError:error];
    116115    WebResourceLoader::didFail(error);
    117116}
    118117
    119 void NetscapePlugInStreamLoader::cancel(NSError *error)
     118void NetscapePlugInStreamLoader::didCancel(NSError *error)
    120119{
    121120    // Calling removePlugInStreamLoader will likely result in a call to deref, so we must protect.
    122121    RefPtr<NetscapePlugInStreamLoader> protect(this);
    123122
    124     [frameLoader() removePlugInStreamLoader:this];
     123    frameLoader()->removePlugInStreamLoader(this);
    125124    [m_stream.get() destroyStreamWithError:error];
    126     WebResourceLoader::cancel(error);
     125    WebResourceLoader::didCancel(error);
    127126}
    128127
  • trunk/WebCore/loader/mac/WebSubresourceLoader.h

    r17206 r17238  
    3434    class SubresourceLoader : public WebResourceLoader {
    3535    public:
    36         static id <WebCoreResourceHandle> create(WebFrameLoader *, id <WebCoreResourceLoader>,
     36        static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
    3737            NSString *method, NSURL *URL, NSDictionary *customHeaders, NSString *referrer);
    38         static id <WebCoreResourceHandle> create(WebFrameLoader *, id <WebCoreResourceLoader>,
     38        static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
    3939            NSString *method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, NSString *referrer);
    4040
    4141        virtual ~SubresourceLoader();
    42 
    43         virtual void signalFinish();
    44         virtual void cancel();
    4542
    4643        virtual NSURLRequest *willSendRequest(NSURLRequest *, NSURLResponse *redirectResponse);
     
    5148
    5249    private:
    53         static id <WebCoreResourceHandle> create(WebFrameLoader *, id <WebCoreResourceLoader>,
     50        static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
    5451            NSMutableURLRequest *, NSString *method, NSDictionary *customHeaders, NSString *referrer);
    5552
    56         SubresourceLoader(WebFrameLoader *, id <WebCoreResourceLoader>);
     53        SubresourceLoader(Frame*, id <WebCoreResourceLoader>);
    5754        id <WebCoreResourceHandle> handle();
    5855
    59         void receivedError(NSError *error);
     56        virtual void didCancel(NSError *);
    6057
    6158        RetainPtr<id <WebCoreResourceLoader> > m_coreLoader;
  • trunk/WebCore/loader/mac/WebSubresourceLoader.mm

    r17206 r17238  
    3232#import "LoaderNSURLExtras.h"
    3333#import "LoaderNSURLRequestExtras.h"
     34#import "FrameMac.h"
     35#import "WebCoreFrameBridge.h"
    3436#import "WebCoreResourceLoader.h"
    3537#import "WebCoreSystemInterface.h"
     
    5052namespace WebCore {
    5153
    52 SubresourceLoader::SubresourceLoader(WebFrameLoader *fl, id <WebCoreResourceLoader> l)
    53     : WebResourceLoader(fl)
     54SubresourceLoader::SubresourceLoader(Frame* frame, id <WebCoreResourceLoader> l)
     55    : WebResourceLoader(frame)
    5456    , m_coreLoader(l)
    5557    , m_loadingMultipartContent(false)
    5658{
    57     [fl addSubresourceLoader:this];
     59    frameLoader()->addSubresourceLoader(this);
    5860}
    5961
     
    6264}
    6365
    64 id <WebCoreResourceHandle> SubresourceLoader::create(WebFrameLoader *fl, id <WebCoreResourceLoader> rLoader,
     66id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
    6567    NSMutableURLRequest *newRequest, NSString *method, NSDictionary *customHeaders, NSString *referrer)
    6668{
    67     if ([fl state] == WebFrameStateProvisional)
     69    FrameLoader* fl = [Mac(frame)->bridge() frameLoader];
     70    if (fl->state() == WebFrameStateProvisional)
    6871        return nil;
    6972
     
    8891        [newRequest setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    8992    else
    90         [newRequest setCachePolicy:[[fl _originalRequest] cachePolicy]];
     93        [newRequest setCachePolicy:[fl->originalRequest() cachePolicy]];
    9194    setHTTPReferrer(newRequest, referrer);
    9295   
    93     [fl addExtraFieldsToRequest:newRequest mainResource:NO alwaysFromRequest:NO];
    94 
    95     RefPtr<SubresourceLoader> loader(new SubresourceLoader(fl, rLoader));
     96    fl->addExtraFieldsToRequest(newRequest, false, false);
     97
     98    RefPtr<SubresourceLoader> loader(new SubresourceLoader(frame, rLoader));
    9699    if (!loader->load(newRequest))
    97100        return nil;
     
    99102}
    100103
    101 id <WebCoreResourceHandle> SubresourceLoader::create(WebFrameLoader *fl, id <WebCoreResourceLoader> rLoader,
     104id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
    102105    NSString *method, NSURL *URL, NSDictionary *customHeaders, NSString *referrer)
    103106{
    104107    NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:URL];
    105     id <WebCoreResourceHandle> handle = create(fl, rLoader, newRequest, method, customHeaders, referrer);
     108    id <WebCoreResourceHandle> handle = create(frame, rLoader, newRequest, method, customHeaders, referrer);
    106109    [newRequest release];
    107110    return handle;
    108111}
    109112
    110 id <WebCoreResourceHandle> SubresourceLoader::create(WebFrameLoader *fl, id <WebCoreResourceLoader> rLoader,
     113id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
    111114    NSString *method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, NSString *referrer)
    112115{
    113116    NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:URL];
    114117    webSetHTTPBody(newRequest, postData);
    115     id <WebCoreResourceHandle> handle = create(fl, rLoader, newRequest, method, customHeaders, referrer);
     118    id <WebCoreResourceHandle> handle = create(frame, rLoader, newRequest, method, customHeaders, referrer);
    116119    [newRequest release];
    117120    return handle;
    118 }
    119 
    120 void SubresourceLoader::receivedError(NSError *error)
    121 {
    122     [frameLoader() _receivedError:error];
    123121}
    124122
     
    150148   
    151149    if (m_loadingMultipartContent && [resourceData() length]) {
    152         // A subresource loader does not load multipart sections progressively, deliver the previously received data to the coreLoader all at once
     150        // Since a subresource loader does not load multipart sections progressively,
     151        // deliver the previously received data to the coreLoader all at once now.
     152        // Then clear the data to make way for the next multipart section.
    153153        [m_coreLoader.get() addData:resourceData()];
    154 
    155         // Clears the data to make way for the next multipart section
    156154        clearResourceData();
    157155       
    158156        // After the first multipart section is complete, signal to delegates that this load is "finished"
    159         if (!signalledFinish())
    160             signalFinish();
     157        didFinishLoadingOnePart();
    161158    }
    162159}
     
    168165    RefPtr<SubresourceLoader> protect(this);
    169166
    170     // A subresource loader does not load multipart sections progressively, don't deliver any data to the coreLoader yet
     167    // A subresource loader does not load multipart sections progressively.
     168    // So don't deliver any data to the coreLoader yet.
    171169    if (!m_loadingMultipartContent)
    172170        [m_coreLoader.get() addData:data];
     
    174172}
    175173
    176 void SubresourceLoader::signalFinish()
    177 {
    178     [frameLoader() removeSubresourceLoader:this];
    179     [frameLoader() _finishedLoadingResource];
    180     WebResourceLoader::signalFinish();
    181 }
    182 
    183174void SubresourceLoader::didFinishLoading()
    184175{
     176    if (cancelled())
     177        return;
     178    ASSERT(!reachedTerminalState());
     179
    185180    // Calling removeSubresourceLoader will likely result in a call to deref, so we must protect ourselves.
    186181    RefPtr<SubresourceLoader> protect(this);
    187    
     182
    188183    [m_coreLoader.get() finishWithData:resourceData()];
    189    
    190     if (!signalledFinish())
    191         signalFinish();
    192        
     184    if (cancelled())
     185        return;
     186    frameLoader()->removeSubresourceLoader(this);
    193187    WebResourceLoader::didFinishLoading();
    194188}
     
    196190void SubresourceLoader::didFail(NSError *error)
    197191{
     192    if (cancelled())
     193        return;
     194    ASSERT(!reachedTerminalState());
     195
    198196    // Calling removeSubresourceLoader will likely result in a call to deref, so we must protect ourselves.
    199197    RefPtr<SubresourceLoader> protect(this);
    200    
     198
    201199    [m_coreLoader.get() reportError];
    202     [frameLoader() removeSubresourceLoader:this];
    203     receivedError(error);
     200    if (cancelled())
     201        return;
     202    frameLoader()->removeSubresourceLoader(this);
    204203    WebResourceLoader::didFail(error);
    205204}
    206205
    207 void SubresourceLoader::cancel()
    208 {
     206void SubresourceLoader::didCancel(NSError *error)
     207{
     208    ASSERT(!reachedTerminalState());
     209
    209210    // Calling removeSubresourceLoader will likely result in a call to deref, so we must protect ourselves.
    210211    RefPtr<SubresourceLoader> protect(this);
    211        
     212
    212213    [m_coreLoader.get() cancel];
    213     [frameLoader() removeSubresourceLoader:this];
    214     receivedError(cancelledError());
    215     WebResourceLoader::cancel();
     214    if (cancelled())
     215        return;
     216    frameLoader()->removeSubresourceLoader(this);
     217    WebResourceLoader::didCancel(error);
    216218}
    217219
  • trunk/WebKit/ChangeLog

    r17236 r17238  
     12006-10-23  Darin Adler  <darin@apple.com>
     2
     3        Reviewed by Maciej.
     4
     5        - converted WebFrameLoader to C++
     6
     7        * History/WebHistoryItem.m:
     8        (+[WebHistoryItem _closeObjectsInPendingPageCaches]):
     9        * Plugins/WebBaseNetscapePluginView.mm:
     10        (-[WebBaseNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
     11        * Plugins/WebNetscapePluginStream.mm:
     12        (-[WebNetscapePluginStream start]):
     13        (-[WebNetscapePluginStream stop]):
     14        * Plugins/WebPluginController.mm:
     15        (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
     16        (-[WebPluginController pluginView:receivedResponse:]):
     17        * WebCoreSupport/WebFrameBridge.h:
     18        * WebKit.xcodeproj/project.pbxproj:
     19        * WebView/WebDataSource.mm:
     20        (-[WebDataSource _loadFromPageCache:]):
     21        (-[WebDataSource _webView]):
     22        (-[WebDataSource webFrame]):
     23        * WebView/WebDocumentLoaderMac.h:
     24        * WebView/WebDocumentLoaderMac.m:
     25        (-[WebDocumentLoaderMac dealloc]):
     26        (-[WebDocumentLoaderMac attachToFrame]):
     27        (-[WebDocumentLoaderMac detachFromFrame]):
     28        * WebView/WebFrame.mm:
     29        (+[WebFrame _timeOfLastCompletedLoad]):
     30        (-[WebFrame _loadItem:withLoadType:]):
     31        (-[WebFrame _loadURL:referrer:intoChild:]):
     32        (-[WebFrame _currentBackForwardListItemToResetTo]):
     33        (-[WebFrame _itemForRestoringDocState]):
     34        (-[WebFrame _frameLoader]):
     35        (-[WebFrame _firstLayoutDone]):
     36        (-[WebFrame _loadType]):
     37        (-[WebFrame provisionalDataSource]):
     38        (-[WebFrame dataSource]):
     39        (-[WebFrame loadRequest:]):
     40        (-[WebFrame loadArchive:]):
     41        (-[WebFrame stopLoading]):
     42        (-[WebFrame reload]):
     43        (-[WebFrame _updateHistoryForCommit]):
     44        (-[WebFrame _updateHistoryForReload]):
     45        (-[WebFrame _updateHistoryForInternalLoad]):
     46        (-[WebFrame _deliverArchivedResourcesAfterDelay]):
     47        (-[WebFrame _willUseArchiveForRequest:originalURL:loader:]):
     48        (-[WebFrame _deliverArchivedResources]):
     49        (-[WebFrame _prepareForDataSourceReplacement]):
     50        (-[WebFrame _provisionalLoadStarted]):
     51        * WebView/WebFrameInternal.h:
     52        * WebView/WebHTMLView.m:
     53        (-[WebHTMLView _clearLastHitViewIfSelf]):
     54        (-[WebHTMLView _updateMouseoverWithEvent:]):
     55        (-[NSArray removeMouseMovedObserverUnconditionally]):
     56        (-[NSArray removeMouseMovedObserver]):
     57        (-[NSArray viewWillMoveToWindow:]):
     58        (-[NSArray viewDidMoveToWindow]):
     59        (-[WebHTMLView _canMakeTextSmaller]):
     60        (-[WebHTMLView _canMakeTextLarger]):
     61        (-[WebHTMLView _canMakeTextStandardSize]):
     62        * WebView/WebPDFView.mm:
     63        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
     64        * WebView/WebView.mm:
     65        (-[WebView _close]):
     66        (-[WebView setDefersCallbacks:]):
     67        (-[WebView setCustomTextEncodingName:]):
     68
    1692006-10-23  Geoffrey Garen  <ggaren@apple.com>
    270
  • trunk/WebKit/History/WebHistoryItem.m

    r16873 r17238  
    715715        if ([HTMLView isKindOfClass:[WebHTMLView class]]) {
    716716            // To avoid any possible retain cycles, call close on all the WebHTMLView.
    717             // Don't close the WebHTMLVIew that is currently being viewed.
     717            // Don't close the WebHTMLView that is currently being viewed.
    718718            if ([[[HTMLView _frame] frameView] documentView] != HTMLView)
    719719                [HTMLView close];
  • trunk/WebKit/Plugins/WebBaseNetscapePluginView.mm

    r17229 r17238  
    18951895    // don't let a plugin start any loads if it is no longer part of a document that is being
    18961896    // displayed
    1897     if ([[self dataSource] _documentLoader] !=  [[[self webFrame] _frameLoader] activeDocumentLoader])
     1897    if ([[self dataSource] _documentLoader] != [[self webFrame] _frameLoader]->activeDocumentLoader())
    18981898        return NPERR_GENERIC_ERROR;
    18991899   
  • trunk/WebKit/Plugins/WebNetscapePluginStream.mm

    r17229 r17238  
    3030
    3131#import <Foundation/NSURLConnection.h>
     32#import <WebCore/FrameMac.h>
    3233#import <WebCore/WebFrameLoader.h>
    3334#import <WebCore/WebNetscapePlugInStreamLoader.h>
     
    7374        [(NSMutableURLRequest *)request _web_setHTTPReferrer:nil];
    7475
    75     _loader = NetscapePlugInStreamLoader::create([[view webFrame] _frameLoader], self).release();
     76    _loader = NetscapePlugInStreamLoader::create([bridge impl], self).release();
    7677   
    7778    isTerminated = NO;
     
    99100    ASSERT(request);
    100101
    101     [_loader->frameLoader() addPlugInStreamLoader:_loader];
    102 
     102    _loader->frameLoader()->addPlugInStreamLoader(_loader);
    103103    if (!_loader->load(request))
    104         [_loader->frameLoader() removePlugInStreamLoader:_loader];
     104        _loader->frameLoader()->removePlugInStreamLoader(_loader);
    105105}
    106106
     
    113113- (void)stop
    114114{
    115     [self cancelLoadAndDestroyStreamWithError:_loader->cancelledError()];
     115    if (!_loader->isDone())
     116        [self cancelLoadAndDestroyStreamWithError:_loader->cancelledError()];
    116117}
    117118
  • trunk/WebKit/Plugins/WebPluginController.mm

    r17229 r17238  
    301301            return;
    302302        }
    303         [[frame _frameLoader] loadRequest:request inFrameNamed:target];
     303        [frame _frameLoader]->load(request, target);
    304304    }
    305305}
     
    376376                                                        pluginName:nil // FIXME: Get this from somewhere
    377377                                                          MIMEType:[response MIMEType]];
    378         [[[_dataSource _documentLoader] frameLoader] stopLoadingWithError:error];
     378        [[_dataSource _documentLoader] frameLoader]->stopLoading(error);
    379379        [error release];
    380380    }       
  • trunk/WebKit/WebCoreSupport/WebFrameBridge.h

    r17025 r17238  
    3030
    3131@class WebPageBridge;
    32 @class WebCoreRenderPart;
    3332@class WebFrame;
    34 @class WebFrameLoader;
    3533@class WebFrameView;
    3634
  • trunk/WebKit/WebKit.xcodeproj/project.pbxproj

    r17236 r17238  
    390390                65EEDE56084FFC9E0002DB25 /* WebNSFileManagerExtras.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSFileManagerExtras.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    391391                65FFB7FA0AD0B7D30048CD05 /* WebDocumentLoaderMac.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebDocumentLoaderMac.h; sourceTree = "<group>"; };
    392                 65FFB7FB0AD0B7D30048CD05 /* WebDocumentLoaderMac.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WebDocumentLoaderMac.m; sourceTree = "<group>"; };
     392                65FFB7FB0AD0B7D30048CD05 /* WebDocumentLoaderMac.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = WebDocumentLoaderMac.m; sourceTree = "<group>"; };
    393393                700BC50B04144DA100A80182 /* WebDefaultResourceLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultResourceLoadDelegate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    394394                700BC50C04144DA100A80182 /* WebDefaultResourceLoadDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDefaultResourceLoadDelegate.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
  • trunk/WebKit/WebView/WebDataSource.mm

    r17229 r17238  
    5656#import "WebDocumentLoaderMac.h"
    5757
     58using namespace WebCore;
     59
    5860@interface WebDataSourcePrivate : NSObject
    5961{
     
    289291    _private->loadingFromPageCache = YES;
    290292    [_private->loader setCommitted:YES];
    291     [[_private->loader frameLoader] commitProvisionalLoad:pageCache];
     293    [_private->loader frameLoader]->commitProvisionalLoad(pageCache);
    292294}
    293295
     
    305307- (WebView *)_webView
    306308{
    307     return [(WebFrame *)[[_private->loader frameLoader] client] webView];
     309    return [[self webFrame] webView];
    308310}
    309311
     
    405407- (WebFrame *)webFrame
    406408{
    407     return (WebFrame *)[[_private->loader frameLoader] client];
     409    FrameLoader* frameLoader = [_private->loader frameLoader];
     410    if (!frameLoader)
     411        return nil;
     412    return (WebFrame *)frameLoader->client();
    408413}
    409414
  • trunk/WebKit/WebView/WebDocumentLoaderMac.h

    r16967 r17238  
    2121 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    2222 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    23     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    2424 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    2525 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     
    3333@interface WebDocumentLoaderMac : WebDocumentLoader
    3434{
    35     @public
    3635    WebDataSource *dataSource;
    3736    WebDataSource *detachedDataSource; // not retained
    3837}
    39 
    40 - (id)initWithRequest:(NSURLRequest *)request;
    4138- (void)setDataSource:(WebDataSource *)dataSource;
    4239- (WebDataSource *)dataSource;
    43 
    4440@end
  • trunk/WebKit/WebView/WebDocumentLoaderMac.m

    r16919 r17238  
    3131#import <JavaScriptCore/Assertions.h>
    3232
    33 #import <WebKitSystemInterface.h>
    34 
    3533@implementation WebDocumentLoaderMac
    36 
    37 
    38 - (id)initWithRequest:(NSURLRequest *)req
    39 {
    40     self = [super initWithRequest:req];
    41     return self;
    42 }
    4334
    4435- (void)dealloc
    4536{
    4637    [dataSource release];
    47    
    4838    [super dealloc];
    4939}   
     
    6151}
    6252
    63 - (void)setFrameLoader:(WebFrameLoader *)fl
     53- (void)attachToFrame
    6454{
    65     [super setFrameLoader:fl];
     55    [super attachToFrame];
    6656    if (detachedDataSource) {
    6757        ASSERT(!dataSource);
     
    7161}
    7262
    73 - (void)detachFromFrameLoader
     63- (void)detachFromFrame
    7464{
    75     [super detachFromFrameLoader];
     65    [super detachFromFrame];
    7666    detachedDataSource = dataSource;
    7767    [self setDataSource:nil];
     
    7969
    8070@end
    81 
    82 
    83 
    84 
  • trunk/WebKit/WebView/WebFrame.mm

    r17229 r17238  
    392392+ (CFAbsoluteTime)_timeOfLastCompletedLoad
    393393{
    394     return [WebFrameLoader timeOfLastCompletedLoad];
     394    return FrameLoader::timeOfLastCompletedLoad();
    395395}
    396396
     
    478478    // FIXME: These checks don't match the ones in _loadURL:referrer:loadType:target:triggeringEvent:isFormSubmission:
    479479    // Perhaps they should.
    480     if (!formData && ![[self _frameLoader] shouldReloadForCurrent:itemURL andDestination:currentURL] && [self _URLsMatchItem:item] )
    481     {
     480    if (!formData && ![self _frameLoader]->shouldReload(itemURL, currentURL) && [self _URLsMatchItem:item]) {
    482481#if 0
    483482        // FIXME:  We need to normalize the code paths for anchor navigation.  Something
     
    501500        // Fake the URL change by updating the data source's request.  This will no longer
    502501        // be necessary if we do the better fix described above.
    503         [[[self _frameLoader] documentLoader] replaceRequestURLForAnchorScrollWithURL:itemURL];
     502        [[self _frameLoader]->documentLoader() replaceRequestURLForAnchorScrollWithURL:itemURL];
    504503       
    505504        [[[self webView] _frameLoadDelegateForwarder] webView:[self webView]
     
    522521            if (delta <= [[[self webView] preferences] _backForwardCacheExpirationInterval]) {
    523522                newDataSource = [pageCache objectForKey: WebPageCacheDataSourceKey];
    524                 [[self _frameLoader] loadDocumentLoader:[newDataSource _documentLoader] withLoadType:loadType formState:0];   
     523                [self _frameLoader]->load([newDataSource _documentLoader], loadType, 0);   
    525524                inPageCache = YES;
    526525            } else {
     
    532531        if (!inPageCache) {
    533532            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:itemURL];
    534             [[self _frameLoader] addExtraFieldsToRequest:request mainResource:YES alwaysFromRequest:(formData != nil) ? YES : NO];
     533            [self _frameLoader]->addExtraFieldsToRequest(request, true, (formData != nil));
    535534
    536535            // If this was a repost that failed the page cache, we might try to repost the form.
     
    542541                [request _web_setHTTPContentType:[item formContentType]];
    543542
    544                 // Slight hack to test if the WF cache contains the page we're going to.  We want
     543                // Slight hack to test if the NSURL cache contains the page we're going to.  We want
    545544                // to know this before talking to the policy delegate, since it affects whether we
    546545                // show the DoYouReallyWantToRepost nag.
     
    553552                [NSURLConnection sendSynchronousRequest:request returningResponse:&synchResponse error:nil];
    554553                if (synchResponse == nil) {
    555                     // Not in WF cache
     554                    // Not in the NSURL cache
    556555                    [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
    557                     action = [[self _frameLoader] actionInformationForNavigationType:NavigationTypeFormResubmitted event:nil originalURL:itemURL];
    558                 } else {
     556                    action = [self _frameLoader]->actionInformation(NavigationTypeFormResubmitted, nil, itemURL);
     557                } else
    559558                    // We can use the cache, don't use navType=resubmit
    560                     action = [[self _frameLoader] actionInformationForLoadType:loadType isFormSubmission:NO event:nil originalURL:itemURL];
    561                 }
     559                    action = [self _frameLoader]->actionInformation(loadType, false, nil, itemURL);
    562560            } else {
    563561                switch (loadType) {
     
    582580                }
    583581
    584                 action = [[self _frameLoader] actionInformationForLoadType:loadType isFormSubmission:NO event:nil originalURL:itemOriginalURL];
     582                action = [self _frameLoader]->actionInformation(loadType, false, nil, itemOriginalURL);
    585583            }
    586584
    587             [[self _frameLoader] _loadRequest:request triggeringAction:action loadType:loadType formState:0];
     585            [self _frameLoader]->load(request, action, loadType, 0);
    588586            [request release];
    589587        }
     
    667665    WebHistoryItem *parentItem = _private->currentItem;
    668666    NSArray *childItems = [parentItem children];
    669     FrameLoadType loadType = [[self _frameLoader] loadType];
     667    FrameLoadType loadType = [self _frameLoader]->loadType();
    670668    FrameLoadType childLoadType = FrameLoadTypeInternal;
    671669    WebHistoryItem *childItem = nil;
     
    701699        [childFrame loadArchive:archive];
    702700    else
    703         [[childFrame _frameLoader] loadURL:URL referrer:referrer loadType:childLoadType target:nil triggeringEvent:nil form:nil formValues:nil];
     701        [childFrame _frameLoader]->load(URL, referrer, childLoadType, nil, nil, nil, nil);
    704702}
    705703
     
    752750- (WebHistoryItem *)_currentBackForwardListItemToResetTo
    753751{
    754     if (isBackForwardLoadType([[self _frameLoader] loadType]) && [self _isMainFrame])
     752    if (isBackForwardLoadType([self _frameLoader]->loadType()) && [self _isMainFrame])
    755753        return _private->currentItem;
    756754    return nil;
     
    775773- (WebHistoryItem *)_itemForRestoringDocState
    776774{
    777     switch ([[self _frameLoader] loadType]) {
     775    switch ([self _frameLoader]->loadType()) {
    778776        case FrameLoadTypeReload:
    779777        case FrameLoadTypeReloadAllowingStaleData:
     
    10491047}
    10501048
    1051 - (WebFrameLoader *)_frameLoader
     1049- (FrameLoader*)_frameLoader
    10521050{
    10531051    return [_private->bridge frameLoader];
     
    11011099- (BOOL)_firstLayoutDone
    11021100{
    1103     return [[self _frameLoader] firstLayoutDone];
     1101    return [self _frameLoader]->firstLayoutDone();
    11041102}
    11051103
    11061104- (WebFrameLoadType)_loadType
    11071105{
    1108     return (WebFrameLoadType)[[self _frameLoader] loadType];
     1106    return (WebFrameLoadType)[self _frameLoader]->loadType();
    11091107}
    11101108
     
    11701168- (WebDataSource *)provisionalDataSource
    11711169{
    1172     return dataSource([[self _frameLoader] provisionalDocumentLoader]);
     1170    return dataSource([self _frameLoader]->provisionalDocumentLoader());
    11731171}
    11741172
    11751173- (WebDataSource *)dataSource
    11761174{
    1177     return dataSource([[self _frameLoader] documentLoader]);
     1175    return dataSource([self _frameLoader]->documentLoader());
    11781176}
    11791177
    11801178- (void)loadRequest:(NSURLRequest *)request
    11811179{
    1182     [[self _frameLoader] loadRequest:request];
     1180    [self _frameLoader]->load(request);
    11831181}
    11841182
     
    12261224        WebDocumentLoader *documentLoader = [self _createDocumentLoaderWithRequest:request];
    12271225        [dataSource(documentLoader) _addToUnarchiveState:archive];
    1228         [[self _frameLoader] loadDocumentLoader:documentLoader];
     1226        [self _frameLoader]->load(documentLoader);
    12291227    }
    12301228}
     
    12321230- (void)stopLoading
    12331231{
    1234     [[self _frameLoader] stopLoading];
     1232    [self _frameLoader]->stopLoading();
    12351233}
    12361234
    12371235- (void)reload
    12381236{
    1239     [[self _frameLoader] reload];
     1237    [self _frameLoader]->reload();
    12401238}
    12411239
     
    13401338- (void)_updateHistoryForCommit
    13411339{
    1342     FrameLoadType type = [[self _frameLoader] loadType];
     1340    FrameLoadType type = [self _frameLoader]->loadType();
    13431341    if (isBackForwardLoadType(type) ||
    13441342        (type == FrameLoadTypeReload && [[self provisionalDataSource] unreachableURL] != nil)) {
     
    13591357    LOG(PageCache, "Clearing back/forward cache, %@\n", [currItem URL]);
    13601358    [currItem setHasPageCache:NO];
    1361     if ([[self _frameLoader] loadType] == FrameLoadTypeReload)
     1359    if ([self _frameLoader]->loadType() == FrameLoadTypeReload)
    13621360        [self _saveScrollPositionAndViewStateToItem:currItem];
    13631361    WebDataSource *dataSource = [self dataSource];
     
    14161414{
    14171415    // Add an item to the item tree for this frame
    1418     ASSERT(![[[self _frameLoader] documentLoader] isClientRedirect]);
     1416    ASSERT(![[self _frameLoader]->documentLoader() isClientRedirect]);
    14191417    WebFrame *parentFrame = [self parentFrame];
    14201418    if (parentFrame) {
     
    19671965    if (_private->pendingArchivedResources->isEmpty())
    19681966        return;
    1969     if ([[self _frameLoader] defersCallbacks])
     1967    if ([self _frameLoader]->defersCallbacks())
    19701968        return;
    19711969   
     
    19801978    if (![self _canUseResourceForRequest:r])
    19811979        return NO;
    1982     WebResource *resource = [dataSource([[self _frameLoader] activeDocumentLoader]) _archivedSubresourceForURL:originalURL];
     1980    WebResource *resource = [dataSource([self _frameLoader]->activeDocumentLoader()) _archivedSubresourceForURL:originalURL];
    19831981    if (!resource)
    19841982        return NO;
     
    20242022    if (_private->pendingArchivedResources->isEmpty())
    20252023        return;
    2026     if ([[self _frameLoader] defersCallbacks])
     2024    if ([self _frameLoader]->defersCallbacks())
    20272025        return;
    20282026
     
    21732171    NSWindow *window = [frameView window];
    21742172    NSResponder *firstResp = [window firstResponder];
    2175     if ([firstResp isKindOfClass:[NSView class]]
    2176         && [(NSView *)firstResp isDescendantOf:frameView])
    2177     {
     2173    if ([firstResp isKindOfClass:[NSView class]] && [(NSView *)firstResp isDescendantOf:frameView])
    21782174        [window endEditingFor:firstResp];
    2179     }
    2180    
    2181     [[self _frameLoader] detachChildren];
     2175   
     2176    [self _frameLoader]->detachChildren();
    21822177}
    21832178
     
    22012196- (void)_provisionalLoadStarted
    22022197{
    2203     FrameLoadType loadType = [[self _frameLoader] loadType];
     2198    FrameLoadType loadType = [self _frameLoader]->loadType();
    22042199   
    22052200    // FIXME: This is OK as long as no one resizes the window,
     
    22172212        && [_private->bridge canCachePage]
    22182213        && item
    2219         && ![[self _frameLoader] isQuickRedirectComing]
     2214        && ![self _frameLoader]->isQuickRedirectComing()
    22202215        && loadType != FrameLoadTypeReload
    22212216        && loadType != FrameLoadTypeReloadAllowingStaleData
    22222217        && loadType != FrameLoadTypeSame
    22232218        && ![[self dataSource] isLoading]
    2224         && ![[[self _frameLoader] documentLoader] isStopping]) {
     2219        && ![[self _frameLoader]->documentLoader() isStopping]) {
    22252220        if ([[[self dataSource] representation] isKindOfClass:[WebHTMLRepresentation class]]) {
    22262221            if (![item pageCache]){
  • trunk/WebKit/WebView/WebFrameInternal.h

    r17029 r17238  
    3535@class WebDocumentLoader;
    3636@class WebInspector;
    37 @class WebFrameLoader;
    3837@class WebFrameView;
    3938@class WebFrameBridge;
     39
     40#ifdef __cplusplus
     41namespace WebCore {
     42    class FrameLoader;
     43}
     44typedef WebCore::FrameLoader WebCoreFrameLoader;
     45#else
     46@class WebCoreFrameLoader;
     47#endif
    4048
    4149@interface WebFrame (WebInternal)
     
    6573- (void)_removeInspector:(WebInspector *)inspector;
    6674
    67 - (WebFrameLoader *)_frameLoader;
     75- (WebCoreFrameLoader*)_frameLoader;
    6876- (WebDataSource *)_dataSourceForDocumentLoader:(WebDocumentLoader *)loader;
    6977
  • trunk/WebKit/WebView/WebHTMLView.m

    r17162 r17238  
    10251025- (void)_clearLastHitViewIfSelf
    10261026{
    1027     if (lastHitView == self) {
     1027    if (lastHitView == self)
    10281028        lastHitView = nil;
    1029     }
    10301029}
    10311030
     
    11671166        [view retain];
    11681167
    1169     if (lastHitView != view && lastHitView != nil) {
     1168    if (lastHitView != view && lastHitView && [lastHitView _frame]) {
    11701169        // If we are moving out of a view (or frame), let's pretend the mouse moved
    11711170        // all the way out of that view. But we have to account for scrolling, because
     
    23212320}
    23222321
    2323 - (void)removeMouseMovedObserver
    2324 {
    2325     // Don't remove the observer if we're running the Dashboard.
    2326     // FIXME: Right for the windowDidResignKey: case, but wrong for the viewWillMoveToWindow: case.
    2327     if ([[self _webView] _dashboardBehavior:WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows])
    2328         return;
    2329 
    2330     [[self _webView] _mouseDidMoveOverElement:nil modifierFlags:0];
     2322- (void)removeMouseMovedObserverUnconditionally
     2323{
    23312324    [[NSNotificationCenter defaultCenter] removeObserver:self
    23322325        name:WKMouseMovedNotification() object:nil];
     2326}
     2327
     2328- (void)removeMouseMovedObserver
     2329{
     2330    // Don't remove the observer if we're running the Dashboard.
     2331    if ([[self _webView] _dashboardBehavior:WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows])
     2332        return;
     2333
     2334    [[self _webView] _mouseDidMoveOverElement:nil modifierFlags:0];
     2335    [self removeMouseMovedObserverUnconditionally];
    23332336}
    23342337
     
    24172420    // are created by initWithCoder: and so won't be normally
    24182421    // initialized.  The stub views are discarded by WebView.
    2419     if (_private) {
    2420         // FIXME: Some of these calls may not work because this view may be already removed from it's superview.
    2421         [self removeMouseMovedObserver];
    2422         [self removeWindowObservers];
    2423         [self removeSuperviewObservers];
    2424         [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(_updateMouseoverWithFakeEvent) object:nil];
    2425    
    2426         [[self _pluginController] stopAllPlugins];
    2427     }
     2422    if (!_private)
     2423        return;
     2424
     2425    // FIXME: Some of these calls may not work because this view may be already removed from it's superview.
     2426    [self removeMouseMovedObserverUnconditionally];
     2427    [self removeWindowObservers];
     2428    [self removeSuperviewObservers];
     2429    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(_updateMouseoverWithFakeEvent) object:nil];
     2430
     2431    [[self _pluginController] stopAllPlugins];
    24282432}
    24292433
     
    24342438    // are created by initWithCoder: and so won't be normally
    24352439    // initialized.  The stub views are discarded by WebView.
    2436     if (_private) {
    2437         [self _stopAutoscrollTimer];
    2438         if ([self window]) {
    2439             _private->lastScrollPosition = [[self superview] bounds].origin;
    2440             [self addWindowObservers];
    2441             [self addSuperviewObservers];
    2442             [self addMouseMovedObserver];
    2443 
    2444             // Schedule this update, rather than making the call right now.
    2445             // The reason is that placing the caret in the just-installed view requires
    2446             // the HTML/XML document to be available on the WebCore side, but it is not
    2447             // at the time this code is running. However, it will be there on the next
    2448             // crank of the run loop. Doing this helps to make a blinking caret appear
    2449             // in a new, empty window "automatic".
    2450             [self performSelector:@selector(_updateActiveState) withObject:nil afterDelay:0];
    2451 
    2452             [[self _pluginController] startAllPlugins];
    2453    
    2454             _private->lastScrollPosition = NSZeroPoint;
    2455         }
     2440    if (!_private)
     2441        return;
     2442       
     2443    [self _stopAutoscrollTimer];
     2444    if ([self window]) {
     2445        _private->lastScrollPosition = [[self superview] bounds].origin;
     2446        [self addWindowObservers];
     2447        [self addSuperviewObservers];
     2448        [self addMouseMovedObserver];
     2449
     2450        // Schedule this update, rather than making the call right now.
     2451        // The reason is that placing the caret in the just-installed view requires
     2452        // the HTML/XML document to be available on the WebCore side, but it is not
     2453        // at the time this code is running. However, it will be there on the next
     2454        // crank of the run loop. Doing this helps to make a blinking caret appear
     2455        // in a new, empty window "automatic".
     2456        [self performSelector:@selector(_updateActiveState) withObject:nil afterDelay:0];
     2457
     2458        [[self _pluginController] startAllPlugins];
     2459
     2460        _private->lastScrollPosition = NSZeroPoint;
    24562461    }
    24572462}
     
    48344839
    48354840// never sent because we track the common size factor
    4836 - (BOOL)_canMakeTextSmaller          {   ASSERT_NOT_REACHED(); return NO;    }
    4837 - (BOOL)_canMakeTextLarger           {   ASSERT_NOT_REACHED(); return NO;    }
    4838 - (BOOL)_canMakeTextStandardSize     {   ASSERT_NOT_REACHED(); return NO;    }
     4841- (BOOL)_canMakeTextSmaller
     4842{
     4843    ASSERT_NOT_REACHED();
     4844    return NO;
     4845}
     4846
     4847- (BOOL)_canMakeTextLarger
     4848{
     4849    ASSERT_NOT_REACHED();
     4850    return NO;
     4851}
     4852
     4853- (BOOL)_canMakeTextStandardSize
     4854{
     4855    ASSERT_NOT_REACHED();
     4856    return NO;
     4857}
    48394858
    48404859@end
  • trunk/WebKit/WebView/WebPDFView.mm

    r17229 r17238  
    817817- (void)PDFViewWillClickOnLink:(PDFView *)sender withURL:(NSURL *)URL
    818818{
    819     if (URL != nil)
    820         [[[dataSource webFrame] _frameLoader] safeLoadURL:URL];
     819    if (URL)
     820        [[dataSource webFrame] _frameLoader]->safeLoad(URL);
    821821}
    822822
  • trunk/WebKit/WebView/WebView.mm

    r17229 r17238  
    3030#import "WebViewInternal.h"
    3131
    32 #import <JavaScriptCore/Assertions.h>
    3332#import "WebBackForwardList.h"
    3433#import "WebBaseNetscapePluginView.h"
    3534#import "WebDOMOperationsPrivate.h"
    3635#import "WebDashboardRegion.h"
    37 #import <WebCore/WebDataProtocol.h>
    3836#import "WebDataSourceInternal.h"
    3937#import "WebDefaultEditingDelegate.h"
     
    4543#import "WebDocument.h"
    4644#import "WebDocumentInternal.h"
    47 #import <WebCore/WebDocumentLoader.h>
    4845#import "WebDownload.h"
    4946#import "WebDownloadInternal.h"
     
    5350#import "WebFrameBridge.h"
    5451#import "WebFrameInternal.h"
    55 #import <WebCore/WebFrameLoader.h>
    5652#import "WebFrameViewInternal.h"
    5753#import "WebHTMLRepresentation.h"
     
    7672#import "WebNSUserDefaultsExtras.h"
    7773#import "WebNSViewExtras.h"
     74#import "WebPDFView.h"
    7875#import "WebPageBridge.h"
    79 #import "WebPDFView.h"
    8076#import "WebPluginDatabase.h"
    8177#import "WebPolicyDelegate.h"
     78#import "WebPreferenceKeysPrivate.h"
    8279#import "WebPreferencesPrivate.h"
    83 #import "WebPreferenceKeysPrivate.h"
    8480#import "WebResourceLoadDelegate.h"
    8581#import "WebScriptDebugDelegatePrivate.h"
     
    8985#import <CoreFoundation/CFSet.h>
    9086#import <Foundation/NSURLConnection.h>
     87#import <JavaScriptCore/Assertions.h>
    9188#import <WebCore/WebCoreEncodings.h>
    9289#import <WebCore/WebCoreFrameBridge.h>
    9390#import <WebCore/WebCoreSettings.h>
     91#import <WebCore/WebCoreTextRenderer.h>
    9492#import <WebCore/WebCoreView.h>
     93#import <WebCore/WebDataProtocol.h>
     94#import <WebCore/WebDocumentLoader.h>
     95#import <WebCore/WebFrameLoader.h>
    9596#import <WebKit/DOM.h>
     97#import <WebKit/DOMExtensions.h>
    9698#import <WebKit/DOMPrivate.h>
    97 #import <WebKit/DOMExtensions.h>
    9899#import <WebKitSystemInterface.h>
    99100#import <objc/objc-runtime.h>
    100101
    101 #import <WebCore/WebCoreTextRenderer.h>
     102using namespace WebCore;
    102103
    103104#if defined(__ppc__) || defined(__ppc64__)
     
    622623    [self removeDragCaret];
    623624
    624     [[[self mainFrame] _frameLoader] detachFromParent];
     625    FrameLoader* mainFrameLoader = [[self mainFrame] _frameLoader];
     626    if (mainFrameLoader)
     627        mainFrameLoader->detachFromParent();
    625628    [_private->_pageBridge close];
    626629    [_private->_pageBridge release];
     
    695698- (void)setDefersCallbacks:(BOOL)defers
    696699{
    697     if (defers == _private->defersCallbacks) {
     700    if (defers == _private->defersCallbacks)
    698701        return;
    699     }
    700702
    701703    _private->defersCallbacks = defers;
    702     [[[self mainFrame] _frameLoader] defersCallbacksChanged];
     704    FrameLoader* mainFrameLoader = [[self mainFrame] _frameLoader];
     705    if (mainFrameLoader)
     706        mainFrameLoader->defersCallbacksChanged();
    703707}
    704708
     
    21862190{
    21872191    NSString *oldEncoding = [self customTextEncodingName];
    2188     if (encoding == oldEncoding || [encoding isEqualToString:oldEncoding]) {
     2192    if (encoding == oldEncoding || [encoding isEqualToString:oldEncoding])
    21892193        return;
    2190     }
    2191     [[[self mainFrame] _frameLoader] _reloadAllowingStaleDataWithOverrideEncoding:encoding];
     2194    FrameLoader* mainFrameLoader = [[self mainFrame] _frameLoader];
     2195    if (mainFrameLoader)
     2196        mainFrameLoader->reloadAllowingStaleData(encoding);
    21922197}
    21932198
Note: See TracChangeset for help on using the changeset viewer.