<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210845] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210845">210845</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2017-01-17 21:17:17 -0800 (Tue, 17 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove PassRefPtr from &quot;loader&quot; directory of WebCore
https://bugs.webkit.org/show_bug.cgi?id=167055

Reviewed by Alex Christensen.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::processHttpEquiv): Pass a reference.
* editing/CompositeEditCommand.cpp:
(WebCore::EditCommandComposition::unapply): Ditto.
(WebCore::EditCommandComposition::reapply): Ditto.
(WebCore::CompositeEditCommand::ensureComposition): Return a reference.
(WebCore::CompositeEditCommand::applyCommandToComposite): Use a reference.
* editing/CompositeEditCommand.h: Updated for above changes.

* editing/Editor.cpp:
(WebCore::Editor::unappliedEditing): Take a reference instead of a PassRefPtr.
(WebCore::Editor::reappliedEditing): Ditto.
* editing/Editor.h: Updated for above changes. Also changed the
FragmentAndResources resources vector to hold Ref instead of RefPtr.

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::createFragmentAndAddResources): Updated for change to
FragmentAndResources.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.

* editing/mac/EditorMac.mm:
(WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.

* history/PageCache.cpp:
(WebCore::canCacheFrame): Use a reference.

* html/FileInputType.cpp:
(WebCore::FileInputType::handleDOMActivateEvent): Pass references.

* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::formMethod): Use auto.

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::prepareForSubmission): Updated to use a return
values for textFieldValues intsead of an out argument with getTextFieldValues.
(WebCore::HTMLFormElement::textFieldValues): Renamed from getTextFieldValues
and changed to use a return value instead of an out argument.
(WebCore::HTMLFormElement::submit): Pass a reference.
(WebCore::HTMLFormElement::requestAutocomplete): Pass a Ref&amp;&amp;.
* html/HTMLFormElement.h: Updated for above changes.

* html/HTMLHtmlElement.cpp:
(WebCore::HTMLHtmlElement::insertedByParser): Use a reference.

* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process): Pass a reference.
(WebCore::HTMLLinkElement::setCSSStyleSheet): Use auto.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource): Use a reference.

* inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus): Use a reference,
also update for struct-style member names withou m_ prefix.
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests): Ditto.
(WebCore::InspectorApplicationCacheAgent::getManifestForFrame): Ditto.
(WebCore::InspectorApplicationCacheAgent::getApplicationCacheForFrame): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource): Ditto.
* inspector/InspectorApplicationCacheAgent.h: Updated for above changes.

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::updateApplicationCacheStatusImpl): Take a reference.
* inspector/InspectorInstrumentation.h: Updated for the above.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::DocumentLoader): Move much initialization to class definition.
(WebCore::DocumentLoader::originalRequest): Moved to header to make it inline.
(WebCore::DocumentLoader::originalRequestCopy): Ditto.
(WebCore::DocumentLoader::request): Ditto.
(WebCore::DocumentLoader::url): Ditto.
(WebCore::DocumentLoader::stopLoading): Pass a reference.
(WebCore::DocumentLoader::willSendRequest): Updated to take a raw pointer instead of a
PassRefPtr.
(WebCore::DocumentLoader::commitData): Call shouldUseMainResourceEncoding instead of
special casing WebArchive.
(WebCore::DocumentLoader::maybeCreateArchive): Pass references.
(WebCore::DocumentLoader::setArchive): Take Ref&amp;&amp; instead of PassRefPtr.
(WebCore::DocumentLoader::addAllArchiveResources): Take a reference instead
of a pointer.
(WebCore::DocumentLoader::popArchiveForSubframe): Return RefPtr instead of
PassRefPtr.
(WebCore::DocumentLoader::subresource): Ditto.
(WebCore::DocumentLoader::subresources): Return a Vector&lt;Ref&gt; instead of a
Vector&lt;RefPtr&gt;.
(WebCore::DocumentLoader::substituteResourceDeliveryTimerFired): Use move
instead of swap.
(WebCore::DocumentLoader::scheduleArchiveLoad): Use shouldLoadFromArchiveOnly
instead of a special case for each type of archive.
(WebCore::DocumentLoader::originalURL): Moved to header to make it inline.
(WebCore::DocumentLoader::responseURL): Ditto.
(WebCore::DocumentLoader::documentURL): Call shouldUseMainResourceURL instead of
special casing WebArchive.
(WebCore::DocumentLoader::responseMIMEType): Moved to header to make it inline.
(WebCore::DocumentLoader::currentContentType): Ditto.
(WebCore::DocumentLoader::contentFilter): Ditto.
(WebCore::DocumentLoader::getIconLoadDecisionForIconURL): Pass a reference.
(WebCore::DocumentLoader::getIconDataForIconURL): Ditto.
(WebCore::DocumentLoader::dispatchOnloadEvents): Use a reference.
(WebCore::DocumentLoader::unreachableURL): Moved to header to make it inline.
* loader/DocumentLoader.h: Updated for the above.

* loader/EmptyClients.cpp: Updated for changes to client interfaces.
* loader/EmptyClients.h: Ditto.

* loader/FormState.cpp:
(WebCore::FormState::FormState): Take references instead of PassRefPtr, also
take Vector&amp;&amp; instead of Vector&amp; when we want to take ownership and use move
instead of swap to do that.
(WebCore::FormState::create): Ditto.
* loader/FormState.h: Updated for the above. Also changed return values to be
references instead of pointers and members to be Ref instead of RefPtr.

* loader/FormSubmission.cpp:
(WebCore::FormSubmission::Attributes::parseMethodType): Updated for change
to the Method enumeration.
(WebCore::FormSubmission::Attributes::copyFrom): Deleted.
(WebCore::FormSubmission::FormSubmission): Use Ref&amp;&amp; instead of PassRefPtr.
(WebCore::FormSubmission::create): Use reference instead of pointer and
raw pointer instead of PassRefPtr. Also copy attributes using copy constructor
instead of an explicit copyFrom function.
(WebCore::FormSubmission::requestURL): Updated for change to the Method
enumeration.
(WebCore::FormSubmission::populateFrameLoadRequest): Ditto.
* loader/FormSubmission.h: Updated for the above changes. Made the Attributes
class copyable, since we copy it. Changed some functions to return references
instead of pointers and use Ref instead of RefPtr for data members.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::submitForm): Updated for changes to FormSubmission
and FormState.
(WebCore::FrameLoader::receivedFirstData): Ditto.
(WebCore::FrameLoader::loadFrameRequest): Ditto.
(WebCore::FrameLoader::loadResourceSynchronously): Ditto.
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy): Ditto.

* loader/FrameLoaderClient.h: Use references, pointers, RefPtr, and Ref
instead of PassRefPtr. Removed unused empty dispatchDidFailToStartPlugin.

* loader/HistoryController.cpp:
(WebCore::HistoryController::pushState): Take RefPtr&amp;&amp; instead of PassRefPtr.
(WebCore::HistoryController::replaceState): Ditto.
* loader/HistoryController.h: Updated for the above.

* loader/ImageLoader.cpp:
(WebCore::ImageLoader::updateFromElement): Pass a reference.

* loader/NavigationScheduler.cpp: Use refernces and Ref&amp;&amp; instead of
pointers and PassRefPtr.
(WebCore::ScheduledNavigation::ScheduledNavigation): Added an overload
that sests m_shouldOpenExternalURLsPolicy.
* loader/NavigationScheduler.h: Updated for the above.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::start): Use and pass references.
(WebCore::ResourceLoader::willSendRequest): Ditto.
(WebCore::ResourceLoader::didReceiveResponse): Ditto.
(WebCore::ResourceLoader::didFail): Ditto.

* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::createJavaAppletWidget): Return RefPtr instead
of PassRefPtr. Pass references instead of pointers.
(WebCore::SubframeLoader::loadOrRedirectSubframe): Ditto.
(WebCore::SubframeLoader::loadSubframe): Ditto.
(WebCore::SubframeLoader::document): Deleted. This was never really the
correct idiom for getting the appropriate document; hiding the dependency
on m_frame wasn't paing off.
(WebCore::SubframeLoader::loadPlugin): Pass reference instead of pointer.
(WebCore::SubframeLoader::shouldConvertInvalidURLsToBlank): Eliminated
unneeded null checking and complexity due to going through the document
instead of the frame for this check.
* loader/SubframeLoader.h: Updated for the above.

* loader/appcache/ApplicationCache.cpp:
(WebCore::ApplicationCache::ApplicationCache): Moved data member
initialization to the class definition.
(WebCore::ApplicationCache::~ApplicationCache): Pass a reference instead
of a pointer.
(WebCore::ApplicationCache::isComplete): Ditto.
(WebCore::ApplicationCache::setManifestResource): Take Ref&amp;&amp; instead of
PassRefPtr.
(WebCore::ApplicationCache::addResource): Ditto.
(WebCore::ApplicationCache::removeResource): Deleted. Was unused.
* loader/appcache/ApplicationCache.h: Updated for above changes.

* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::ApplicationCacheGroup): Moved most
member initialization to the class definition.
(WebCore::ApplicationCacheGroup::~ApplicationCacheGroup): Pass a reference.
(WebCore::ApplicationCacheGroup::cacheForMainRequest): Removed
unnecessary preflight for removeFragmentIdentifier, which efficiently
does nothing if there is no identifier. Use early return.
(WebCore::ApplicationCacheGroup::fallbackCacheForMainRequest): More of
the same.
(WebCore::ApplicationCacheGroup::selectCache): Ditto, also take a reference,
and use event names instead of a special enumeration to poast events.
(WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL): Ditto.
(WebCore::ApplicationCacheGroup::finishedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheGroup::failedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheGroup::disassociateDocumentLoader): Ditto.
(WebCore::ApplicationCacheGroup::cacheDestroyed): Ditto.
(WebCore::ApplicationCacheGroup::stopLoadingInFrame): Ditto.
(WebCore::ApplicationCacheGroup::setNewestCache): Use Ref&amp;&amp; instead of
PassRefPtr.
(WebCore::ApplicationCacheGroup::makeObsolete): More of the same.
(WebCore::ApplicationCacheGroup::update): Ditto.
(WebCore::ApplicationCacheGroup::abort): Ditto.
(WebCore::ApplicationCacheGroup::didReceiveResponse): Ditto.
(WebCore::ApplicationCacheGroup::didFinishLoading): Ditto.
(WebCore::ApplicationCacheGroup::didFail): Ditto.
(WebCore::ApplicationCacheGroup::didFinishLoadingManifest): Ditto.
(WebCore::ApplicationCacheGroup::manifestNotFound): Ditto.
(WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): Ditto.
(WebCore::ApplicationCacheGroup::startLoadingEntry): Ditto.
(WebCore::ApplicationCacheGroup::deliverDelayedMainResources): Use a modern
for loop.
(WebCore::ApplicationCacheGroup::addEntry): Use auto and simplify logic
for adding.
(WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): Update since
function result is a reference.
(WebCore::ApplicationCacheGroup::scheduleReachedMaxAppCacheSizeCallback):
Use auto.
(WebCore::ApplicationCacheGroup::postListenerTask): Take event type instead of
taking a special enumeration.
* loader/appcache/ApplicationCacheGroup.h: Updated for the above.

* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::ApplicationCacheHost): Move most member
initialization to the class definition.
(WebCore::ApplicationCacheHost::~ApplicationCacheHost): Use reference.
(WebCore::ApplicationCacheHost::selectCacheWithoutManifest): Ditto.
(WebCore::ApplicationCacheHost::selectCacheWithManifest): Ditto.
(WebCore::ApplicationCacheHost::mainResourceDataReceived): Ditto.
(WebCore::ApplicationCacheHost::failedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheHost::finishedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse): Ditto.
(WebCore::ApplicationCacheHost::createFileURL): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadSynchronously): Ditto.
(WebCore::ApplicationCacheHost::notifyDOMApplicationCache): Take event
type instead of special enumeration.
(WebCore::ApplicationCacheHost::stopLoadingInFrame): Use reference.
(WebCore::ApplicationCacheHost::stopDeferringEvents): Updated to use
event types instead of special enumeration and also repaired possible
edge case where code in event handler somehow triggers additional events.
(WebCore::ApplicationCacheHost::resourceList): Renamed from fillResourceList
and changed to return a vector instead of populating one.
(WebCore::ApplicationCacheHost::applicationCacheInfo): Tweak coding style a bit.
(WebCore::createApplicationCacheEvent): Factored this helper out of
dispatchDOMEvent so we can use Ref instead of RefPtr.
(WebCore::ApplicationCacheHost::dispatchDOMEvent): Updated to recent event type
rather than receiving an event id and mapping it to a type.
(WebCore::ApplicationCacheHost::setApplicationCache): Take RefPtr&amp;&amp; instead of
PassRefPtr.
(WebCore::ApplicationCacheHost::update): Pass a reference.
(WebCore::ApplicationCacheHost::swapCache): Ditto.
(WebCore::ApplicationCacheHost::abort): Ditto.
* loader/appcache/ApplicationCacheHost.h: Updated for the above.

* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::loadCacheGroup): Pass a Ref instead of RefPtr.
(WebCore::ApplicationCacheStorage::cacheGroupForURL): Ditto.
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL): Ditto.
(WebCore::ApplicationCacheStorage::cacheGroupDestroyed): Take a reference.
(WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete): Ditto.
(WebCore::ApplicationCacheStorage::storeNewestCache): Ditto.
(WebCore::ApplicationCacheStorage::loadCache): Return RefPtr instead of PassRefPtr.
(WebCore::ApplicationCacheStorage::deleteCacheGroup): Pass a reference.
* loader/appcache/ApplicationCacheStorage.h: Updated for the above.

* loader/appcache/DOMApplicationCache.cpp:
(WebCore::DOMApplicationCache::DOMApplicationCache): Take a reference.
(WebCore::DOMApplicationCache::toEventType): Deleted.
* loader/appcache/DOMApplicationCache.h: Updated for the above. Made most
members private.

* loader/archive/Archive.cpp:
(WebCore::Archive::clearAllSubframeArchives): Use a set for the logic that
prevents us from walking the same archive more than once, rather than using
a vector. Left it recursive, though.
* loader/archive/Archive.h: Git rid of the type function, replacing it with
three functions for the four different policies we currently have about the
different archive types. Changed functions to take Ref&amp;&amp; instead of PassRefPtr
and return const Vector&lt;Ref&gt;&amp; instead of const Vector&lt;RefPtr&gt;&amp;, changing the
data members to match.

* loader/archive/ArchiveFactory.cpp:
(WebCore::createArchiveMIMETypesMap): Factored this out of the archiveMIMETypes
function so we don't need a boolean. Also use ASCIILiteral.
(WebCore::archiveMIMETypes): Updated to se the above.

* loader/archive/ArchiveResourceCollection.cpp:
(WebCore::ArchiveResourceCollection::addAllResources): Take a reference.
(WebCore::ArchiveResourceCollection::popSubframeArchive): Return RefPtr instead
of PassRefPtr.
* loader/archive/ArchiveResourceCollection.h: Updated for the above.

* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createPropertyListRepresentation): Use auto and
fewer local variables, more references for argument types and return values.
(WebCore::LegacyWebArchive::createResourceResponseFromPropertyListData): Ditto.
(WebCore::LegacyWebArchive::createResource): Ditto.
(WebCore::LegacyWebArchive::create): Ditto.
(WebCore::LegacyWebArchive::extract): Ditto.
(WebCore::LegacyWebArchive::type): Deleted.
(WebCore::LegacyWebArchive::rawDataRepresentation): More of the same.
(WebCore::LegacyWebArchive::createFromSelection): Ditto.
* loader/archive/cf/LegacyWebArchive.h: Updated for the above. Also marked the
class final and added overrides for the four new policy member functions.

* loader/archive/mhtml/MHTMLArchive.cpp:
(WebCore::MHTMLArchive::create): Pass references.
(WebCore::MHTMLArchive::generateMHTMLData): Return RefPtr instead of
PassRefPtr.
* loader/archive/mhtml/MHTMLArchive.h: Updated for the above. Also marked the
class final and added overrides for the four new policy member functions.

* loader/archive/mhtml/MHTMLParser.cpp:
(WebCore::MHTMLParser::parseArchiveWithHeader): Pass Ref instead of RefPtr
to setMainResource and addSubframeArchive.
(WebCore::MHTMLParser::addResourceToArchive): Ditto.

* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::restoreParsedStyleSheet): Return RefPtr instead
of PassRefPtr.
* loader/cache/CachedCSSStyleSheet.h: Updated for the above.

* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::setInitiator): Take a reference instead of a
PassRefPtr.
* loader/cache/CachedResourceRequest.h: Updated for the above.

* loader/cocoa/DiskCacheMonitor.h: Removed. This is a duplicate, unused copy
of DiskCacheMonitorCocoa.h.

* loader/cocoa/DiskCacheMonitorCocoa.h: Removed unneeded exporting and virtual
member functions, made more things private, and changed return type to RefPtr
instead of PassRefPtr.
* loader/cocoa/DiskCacheMonitorCocoa.mm:
(WebCore::DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse):
Changed return type to RefPtr instead of PassRefPtr.

* loader/icon/IconDatabase.cpp:
(WebCore::IconDatabase::setIconDataForIconURL): Take raw pointer instead of
PassRefPtr.
(WebCore::IconDatabase::getOrCreateIconRecord): Return Ref instead of PassRefPtr.
(WebCore::IconDatabase::getImageDataForIconURLFromSQLDatabase): Return RefPtr
instead of PassRefPtr.
* loader/icon/IconDatabase.h: Updated for the above. Also marked functions final
instead of override.
* loader/icon/IconDatabaseBase.h: Ditto.

* loader/icon/PageURLRecord.cpp:
(WebCore::PageURLRecord::PageURLRecord): Moved initialization to the header.
(WebCore::PageURLRecord::~PageURLRecord): Wrote code here instead of calling
setIconRecord(nullptr).
(WebCore::PageURLRecord::setIconRecord): Take RefPtr&amp;&amp; instead of PassRefPtr.
* loader/icon/PageURLRecord.h: Updatd for the above.

* page/Chrome.cpp:
(WebCore::Chrome::runOpenPanel): Updated to take two references.
* page/Chrome.h: Ditto.
* page/ChromeClient.h: ditto.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::applicationCache): Pass a reference.
(WebCore::DOMWindow::setLocation): Ditto.
(WebCore::DOMWindow::createWindow): Ditto.
(WebCore::DOMWindow::open): Ditto.

* page/EditorClient.h: Changed arguments to references instead of PassRefPtr.

* page/History.cpp:
(WebCore::History::stateObjectAdded): Pass an rvalue reference.

* page/Location.cpp:
(WebCore::Location::reload): Pass reference instead of pointer.
(WebCore::Location::setLocation): Ditto.

* platform/URL.cpp:
(WebCore::URL::setFragmentIdentifier): Take a StringView rather than
a String, which is more flexible for callers. Also eliminated an unneeded
string allocation when the old string had a fragment that is being replaced.
* platform/URL.h: Updated for the above.

* replay/ReplayInputDispatchMethods.cpp:
(WebCore::InitialNavigation::dispatch): Pass reference.
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::requestImageResource): Ditto.
* svg/SVGFontFaceUriElement.cpp:
(WebCore::SVGFontFaceUriElement::loadFont): Ditto.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::updateExternalDocument): Ditto.

Source/WebKit/ios:

* WebCoreSupport/WebChromeClientIOS.h: Updated runOpenPanel to take references.
Made class final and most functions private and final.
* WebCoreSupport/WebChromeClientIOS.mm:
(WebChromeClientIOS::runOpenPanel): Updated to take references.

Source/WebKit/mac:

* WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.
Also made class final and most functions private and final.
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::runOpenPanel): Updated to take references.

* WebCoreSupport/WebEditorClient.h: Updated for changes to EditorClient.
* WebCoreSupport/WebEditorClient.mm:
(-[WebUndoStep initWithUndoStep:]): Take reference instead of PassRefPtr.
(+[WebUndoStep stepWithUndoStep:]): Ditto.
(-[WebUndoStep step]): Return reference instead of pointer.
(-[WebEditorUndoTarget undoEditing:]): Updated for the above.
(-[WebEditorUndoTarget redoEditing:]): Ditto.
(WebEditorClient::registerUndoOrRedoStep): Take reference instead of
PassRefPtr.
(WebEditorClient::registerUndoStep): Ditto.
(WebEditorClient::registerRedoStep): Ditto.

* WebCoreSupport/WebFrameLoaderClient.h: Updated for changes to
FrameLoaderClient, marked functions final instead of override.
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Take
pointer instead of PassRefPtr.
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(makeFormFieldValuesDictionary): Take a reference.
(WebFrameLoaderClient::dispatchWillSendSubmitEvent): Take Ref&amp;&amp; instead
of PassRefPtr.
(WebFrameLoaderClient::dispatchWillSubmitForm): Take a reference instead
of PassRefPtr.
(WebFrameLoaderClient::actionDictionary): Take a pointer instead of PassRePtr.
(WebFrameLoaderClient::createFrame): Take a reference instead of a pointer.
(WebFrameLoaderClient::createPlugin): Ditto.
(WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebFrameLoaderClient::createNetworkingContext): Ditto.
(WebFrameLoaderClient::didCreateQuickLookHandle): Pass a reference.

* WebCoreSupport/WebFrameNetworkingContext.h: Use Ref instead of PassRefPtr.
* WebCoreSupport/WebFrameNetworkingContext.mm: Tweak style a bit.

* WebCoreSupport/WebOpenPanelResultListener.h: Take a reference instead of
PassRefPtr. Use RefPtr for class field.
* WebCoreSupport/WebOpenPanelResultListener.mm:
(-[WebOpenPanelResultListener dealloc]): Deleted. Compiler will now do it
correctly without us declaring anything explicitly.
(-[WebOpenPanelResultListener cancel]): Get rid of hand-written deref code,
and let RefPtr do the work.
(-[WebOpenPanelResultListener chooseFilename:]): Ditto.
(-[WebOpenPanelResultListener chooseFilenames:]): Ditto.
(-[WebOpenPanelResultListener chooseFilenames:displayString:iconImage:]):
Rewrote to use a modern Objective-C for loop, reserveInitialCapacity,
and uncheckedAppend.

* WebView/WebArchive.mm:
(-[WebArchive initWithMainResource:subresources:subframeArchives:]):
Updated for changes to LegacyWebArchive.
(-[WebArchive mainResource]): Ditto.
(-[WebArchive subresources]): Ditto.
(-[WebArchive subframeArchives]): Ditto.

* WebView/WebDataSource.mm:
(-[WebDataSource _addSubframeArchives:]): Use a modern Objective-C for loop
instead of NSEnumerator.
(-[WebDataSource _fileWrapperForURL:]): Use auto.
(-[WebDataSource _documentFragmentWithArchive:]): Pass a reference.
(-[WebDataSource mainResource]): Ditto.
(-[WebDataSource subresources]): Ditto.
(-[WebDataSource subresourceForURL:]): Ditto.
(-[WebDataSource addSubresource:]): Ditto.

* WebView/WebResource.mm:
(-[WebResourcePrivate initWithCoreResource:]): Take Ref&amp;&amp; instead of PassRefPtr.
(-[WebResourcePrivate dealloc]): Remove explicit deref since RefPtr will now take
care of it
(-[WebResource initWithCoder:]): Pass a reference.
(-[WebResource encodeWithCoder:]): Updated since coreResource is now RefPtr.
(-[WebResource _initWithCoreResource:]): Take Ref&amp;&amp; instead of PassRefPtr.
(-[WebResource _coreResource]): Return reference rather than pointer.
(-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):
Added code to handle the null case and pass a reference rather than a pointer.
* WebView/WebResourceInternal.h: Updated for the above.

Source/WebKit/win:

* Plugins/PluginView.cpp:
(WebCore::PluginView::mediaCanStart): Fix call to dispatchDidFailToStartPlugin
by calling it directly on WebFrameLoaderClient. If my theory is correct, the old
call has been broken and doing nothing since <a href="http://trac.webkit.org/projects/webkit/changeset/177941">r177941</a>, two years ago, which made
the argument types different between FrameLoaderClient and WebFrameLoaderClient,
leaving WebFrameLoaderClient::dispatchDidFailToStartPlugin as dead code.

* WebCoreSupport/WebChromeClient.cpp:
(WebChromeClient::runOpenPanel): Updated for change to ChromeClient.
* WebCoreSupport/WebChromeClient.h: Ditto.

* WebCoreSupport/WebEditorClient.cpp:
(WebEditorUndoCommand::WebEditorUndoCommand): Take a reference instead of
a PassRefPtr. Also use Ref instead of RefPtr.
(WebEditorClient::shouldChangeTypingStyle): Deleted. Empty function that was
never called.
(WebEditorClient::webViewDidChangeTypingStyle): Ditto.
(WebEditorClient::webViewDidChangeSelection): Ditto.
(WebEditorClient::registerUndoStep):  Take reference instead of PassRefPtr.
(WebEditorClient::registerRedoStep): Ditto.
* WebCoreSupport/WebEditorClient.h: Updated for the above. Also marked the
class and member functions final and made them all private, which will
help us catch if there are any that don't correctly match WebCore.

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Updated
for change to ChromeClient.
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
(WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
(WebFrameLoaderClient::createFrame): Ditto. Also merged two functions into
one because one was private and only called by the other.
(WebFrameLoaderClient::createPlugin): Ditto.
(WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebFrameLoaderClient::createNetworkingContext): Ditto.
* WebCoreSupport/WebFrameLoaderClient.h: Ditto.

* WebCoreSupport/WebFrameNetworkingContext.h:
(WebFrameNetworkingContext::create): Return a Ref instead of a PassRefPtr.

Source/WebKit2:

* Shared/APIWebArchive.h: Use RefPtr&amp;&amp; instead of PassRefPtr.
* Shared/APIWebArchive.mm:
(API::WebArchive::create): Ditto.
(API::WebArchive::WebArchive): Ditto.
(API::WebArchive::subresources): Ditto.
(API::WebArchive::subframeArchives): Ditto.

* Shared/TextCheckerState.h: Initialize data members so classes
using this won't have to explicitly initalize them.

* UIProcess/WebIconDatabase.cpp:
(WebKit::WebIconDatabase::setIconDataForIconURL): Pass a raw
pointer to WebCore.

* UIProcess/WebPageProxy.h: Removed forward declaration of
StringPairVector, not needed here.

* WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
(WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy): Take a reference.
(WebKit::WebIconDatabaseProxy::retainIconForPageURL): Updated for reference.
(WebKit::WebIconDatabaseProxy::releaseIconForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::synchronousIconForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::loadDecisionForIconURL): Ditto.
(WebKit::WebIconDatabaseProxy::receivedIconLoadDecision): Ditto.
(WebKit::WebIconDatabaseProxy::iconDataForIconURL): Ditto.
(WebKit::WebIconDatabaseProxy::setIconURLForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::setIconDataForIconURL): Ditto.
* WebProcess/IconDatabase/WebIconDatabaseProxy.h: Updated for the above.
Marked the class final, made most functions private and final.

* WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
Removed assertion that a pointer is non-null since that pointer is now a
reference. Left use of PassRefPtr here for now.z

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad): Updated since application cache
host is now a reference rather thna a pointer.
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::willSendRequest): Ditto.
(WebKit::WebResourceLoader::didReceiveResponse): Ditto.
(WebKit::WebResourceLoader::didFailResourceLoad): Ditto.

* WebProcess/Plugins/PluginView.cpp:
(WebKit::buildHTTPHeaders): Got rid of unneeded use of String::format.
(WebKit::PluginView::create): Take a reference instead of PassRefPtr.
(WebKit::PluginView::PluginView): Ditto. Also moved much of the data
member initialization to the class definition.
(WebKit::PluginView::recreateAndInitialize): Take Ref&amp;&amp; instead of PassRefPtr.
(WebKit::PluginView::manualLoadDidReceiveResponse): Updated for change to
ManualStreamState enumeration.
(WebKit::PluginView::manualLoadDidReceiveData): Ditto.
(WebKit::PluginView::manualLoadDidFinishLoading Ditto.):
(WebKit::PluginView::manualLoadDidFail): Ditto.
(WebKit::PluginView::liveResourceData): Return RefPtr insead of PassRefPtr.
(WebKit::PluginView::redeliverManualStream): Updated for ManualStreamState.
* WebProcess/Plugins/PluginView.h: Updated for the above. Also changed
ManualStreamState into an enum class.

* WebProcess/WebCoreSupport/WebChromeClient.cpp: Changed m_page to a reference.
(WebKit::WebChromeClient::runOpenPanel): Take both arguments as references.
* WebProcess/WebCoreSupport/WebChromeClient.h: Updated for the above.

* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::registerUndoStep): Take reference instead of PassRefPtr.
(WebKit::WebEditorClient::registerRedoStep): Ditto.
* WebProcess/WebCoreSupport/WebEditorClient.h: Updated for the above

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
Updated for change to FrameLoaderClient.
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(WebKit::WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
(WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
(WebKit::WebFrameLoaderClient::createFrame): Ditto.
(WebKit::WebFrameLoaderClient::createPlugin): Ditto.
(WebKit::WebFrameLoaderClient::recreatePlugin): Ditto.
(WebKit::WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebKit::WebFrameLoaderClient::createNetworkingContext): Ditto.
(WebKit::WebFrameLoaderClient::didRequestAutocomplete): Ditto.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Updated for the above.

* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::didReceiveMobileDocType): Updated since m_page is a
reference now.
(WebKit::WebChromeClient::observedContentChange): Ditto.
(WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame): Ditto.
(WebKit::WebChromeClient::didLayout): Ditto.
(WebKit::WebChromeClient::didStartOverflowScroll): Ditto.
(WebKit::WebChromeClient::didEndOverflowScroll): Ditto.
(WebKit::WebChromeClient::hasStablePageScaleFactor): Ditto.
(WebKit::WebChromeClient::showPlaybackTargetPicker): Ditto.
(WebKit::WebChromeClient::eventThrottlingDelay): Ditto.
(WebKit::WebChromeClient::deviceOrientation): Ditto.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage): Pass reference.
(WebKit::WebPage::createPlugin): Return RefPtr instead of PassRefPtr.
(WebKit::WebPage::fromCorePage): Updated for change to WebChromeClient.
(WebKit::WebPage::setHeaderPageBanner): Take pointer instead of PassRefPtr.
(WebKit::WebPage::setFooterPageBanner): Ditto.
(WebKit::WebPage::setActiveOpenPanelResultListener): Take Ref&amp;&amp; instead of
PassRefPtr.
(WebKit::WebPage::currentSelectionAsRange): Return RefPtr instead of PassRefPtr.
(WebKit::WebPage::rangeFromEditingRange): Ditto.
* WebProcess/WebPage/WebPage.h: Updated for the above.

* WebProcess/WebPage/efl/WebPageEfl.cpp:
(WebKit::WebPage::cachedResponseDataForURL): Return RefPtr instead of PassRefPtr.
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::cachedResponseDataForURL): Ditto.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::cachedResponseDataForURL): Ditto.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::cachedResponseDataForURL): Ditto.
(WebKit::WebPage::setTopOverhangImage): Take raw pointer instead of PassRefPtr.
(WebKit::WebPage::setBottomOverhangImage): Ditto.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess): Pass a reference. Move most initialization to
the class definition.
* WebProcess/WebProcess.h: Updaed for the above.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandcpp">trunk/Source/WebCore/editing/CompositeEditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandh">trunk/Source/WebCore/editing/CompositeEditCommand.h</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorh">trunk/Source/WebCore/editing/Editor.h</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaEditorCocoamm">trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCorehistoryPageCachecpp">trunk/Source/WebCore/history/PageCache.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlFileInputTypecpp">trunk/Source/WebCore/html/FileInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormControlElementcpp">trunk/Source/WebCore/html/HTMLFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementcpp">trunk/Source/WebCore/html/HTMLFormElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementh">trunk/Source/WebCore/html/HTMLFormElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLHtmlElementcpp">trunk/Source/WebCore/html/HTMLHtmlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementcpp">trunk/Source/WebCore/html/HTMLLinkElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorApplicationCacheAgentcpp">trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorApplicationCacheAgenth">trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationcpp">trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationh">trunk/Source/WebCore/inspector/InspectorInstrumentation.h</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentLoadercpp">trunk/Source/WebCore/loader/DocumentLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentLoaderh">trunk/Source/WebCore/loader/DocumentLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientscpp">trunk/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientsh">trunk/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFormStatecpp">trunk/Source/WebCore/loader/FormState.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFormStateh">trunk/Source/WebCore/loader/FormState.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFormSubmissioncpp">trunk/Source/WebCore/loader/FormSubmission.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFormSubmissionh">trunk/Source/WebCore/loader/FormSubmission.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderClienth">trunk/Source/WebCore/loader/FrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebCoreloaderHistoryControllercpp">trunk/Source/WebCore/loader/HistoryController.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderHistoryControllerh">trunk/Source/WebCore/loader/HistoryController.h</a></li>
<li><a href="#trunkSourceWebCoreloaderImageLoadercpp">trunk/Source/WebCore/loader/ImageLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderNavigationSchedulercpp">trunk/Source/WebCore/loader/NavigationScheduler.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderNavigationSchedulerh">trunk/Source/WebCore/loader/NavigationScheduler.h</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadercpp">trunk/Source/WebCore/loader/ResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoadercpp">trunk/Source/WebCore/loader/SubframeLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoaderh">trunk/Source/WebCore/loader/SubframeLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderSubresourceLoadercpp">trunk/Source/WebCore/loader/SubresourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCachecpp">trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheh">trunk/Source/WebCore/loader/appcache/ApplicationCache.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheGroupcpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheGrouph">trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheHostcpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheHosth">trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheStoragecpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheStorageh">trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheDOMApplicationCachecpp">trunk/Source/WebCore/loader/appcache/DOMApplicationCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheDOMApplicationCacheh">trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheManifestParsercpp">trunk/Source/WebCore/loader/appcache/ManifestParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheManifestParserh">trunk/Source/WebCore/loader/appcache/ManifestParser.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchivecpp">trunk/Source/WebCore/loader/archive/Archive.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchiveh">trunk/Source/WebCore/loader/archive/Archive.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchiveFactorycpp">trunk/Source/WebCore/loader/archive/ArchiveFactory.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchiveResourceCollectioncpp">trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchiveResourceCollectionh">trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivecfLegacyWebArchivecpp">trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivecfLegacyWebArchiveh">trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivemhtmlMHTMLArchivecpp">trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivemhtmlMHTMLArchiveh">trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivemhtmlMHTMLParsercpp">trunk/Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedCSSStyleSheetcpp">trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedCSSStyleSheeth">trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceRequestcpp">trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceRequesth">trunk/Source/WebCore/loader/cache/CachedResourceRequest.h</a></li>
<li><a href="#trunkSourceWebCoreloadercocoaDiskCacheMonitorCocoah">trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h</a></li>
<li><a href="#trunkSourceWebCoreloadercocoaDiskCacheMonitorCocoamm">trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreloadericonIconDatabasecpp">trunk/Source/WebCore/loader/icon/IconDatabase.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadericonIconDatabaseh">trunk/Source/WebCore/loader/icon/IconDatabase.h</a></li>
<li><a href="#trunkSourceWebCoreloadericonIconDatabaseBaseh">trunk/Source/WebCore/loader/icon/IconDatabaseBase.h</a></li>
<li><a href="#trunkSourceWebCoreloadericonPageURLRecordcpp">trunk/Source/WebCore/loader/icon/PageURLRecord.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadericonPageURLRecordh">trunk/Source/WebCore/loader/icon/PageURLRecord.h</a></li>
<li><a href="#trunkSourceWebCorepageChromecpp">trunk/Source/WebCore/page/Chrome.cpp</a></li>
<li><a href="#trunkSourceWebCorepageChromeh">trunk/Source/WebCore/page/Chrome.h</a></li>
<li><a href="#trunkSourceWebCorepageChromeClienth">trunk/Source/WebCore/page/ChromeClient.h</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowcpp">trunk/Source/WebCore/page/DOMWindow.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEditorClienth">trunk/Source/WebCore/page/EditorClient.h</a></li>
<li><a href="#trunkSourceWebCorepageHistorycpp">trunk/Source/WebCore/page/History.cpp</a></li>
<li><a href="#trunkSourceWebCorepageLocationcpp">trunk/Source/WebCore/page/Location.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLcpp">trunk/Source/WebCore/platform/URL.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLh">trunk/Source/WebCore/platform/URL.h</a></li>
<li><a href="#trunkSourceWebCorereplayReplayInputDispatchMethodscpp">trunk/Source/WebCore/replay/ReplayInputDispatchMethods.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEImageElementcpp">trunk/Source/WebCore/svg/SVGFEImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontFaceUriElementcpp">trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebKitiosChangeLog">trunk/Source/WebKit/ios/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitiosWebCoreSupportWebChromeClientIOSh">trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.h</a></li>
<li><a href="#trunkSourceWebKitiosWebCoreSupportWebChromeClientIOSmm">trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebChromeClienth">trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebChromeClientmm">trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebEditorClienth">trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebEditorClientmm">trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClientmm">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameNetworkingContexth">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebFrameNetworkingContextmm">trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebOpenPanelResultListenerh">trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebOpenPanelResultListenermm">trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebArchivemm">trunk/Source/WebKit/mac/WebView/WebArchive.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebDataSourcemm">trunk/Source/WebKit/mac/WebView/WebDataSource.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebResourcemm">trunk/Source/WebKit/mac/WebView/WebResource.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebResourceInternalh">trunk/Source/WebKit/mac/WebView/WebResourceInternal.h</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginViewcpp">trunk/Source/WebKit/win/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebChromeClienth">trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebEditorClientcpp">trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebEditorClienth">trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.h</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebFrameNetworkingContexth">trunk/Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIWebArchiveh">trunk/Source/WebKit2/Shared/APIWebArchive.h</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIWebArchivemm">trunk/Source/WebKit2/Shared/APIWebArchive.mm</a></li>
<li><a href="#trunkSourceWebKit2SharedTextCheckerStateh">trunk/Source/WebKit2/Shared/TextCheckerState.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebIconDatabasecpp">trunk/Source/WebKit2/UIProcess/WebIconDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxycpp">trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxyh">trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActioncpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessNetworkWebLoaderStrategycpp">trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessNetworkWebResourceLoadercpp">trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPluginViewcpp">trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPluginViewh">trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebEditorClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebEditorClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportiosWebChromeClientIOSmm">trunk/Source/WebKit2/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageeflWebPageEflcpp">trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagegtkWebPageGtkcpp">trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacWebPageMacmm">trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebProcesscpp">trunk/Source/WebKit2/WebProcess/WebProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebProcessh">trunk/Source/WebKit2/WebProcess/WebProcess.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreloadercocoaDiskCacheMonitorh">trunk/Source/WebCore/loader/cocoa/DiskCacheMonitor.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/ChangeLog        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,3 +1,407 @@
</span><ins>+2017-01-15  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove PassRefPtr from &quot;loader&quot; directory of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=167055
+
+        Reviewed by Alex Christensen.
+
+        * dom/Document.cpp:
+        (WebCore::Document::processHttpEquiv): Pass a reference.
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::EditCommandComposition::unapply): Ditto.
+        (WebCore::EditCommandComposition::reapply): Ditto.
+        (WebCore::CompositeEditCommand::ensureComposition): Return a reference.
+        (WebCore::CompositeEditCommand::applyCommandToComposite): Use a reference.
+        * editing/CompositeEditCommand.h: Updated for above changes.
+
+        * editing/Editor.cpp:
+        (WebCore::Editor::unappliedEditing): Take a reference instead of a PassRefPtr.
+        (WebCore::Editor::reappliedEditing): Ditto.
+        * editing/Editor.h: Updated for above changes. Also changed the
+        FragmentAndResources resources vector to hold Ref instead of RefPtr.
+
+        * editing/cocoa/EditorCocoa.mm:
+        (WebCore::Editor::createFragmentAndAddResources): Updated for change to
+        FragmentAndResources.
+
+        * editing/ios/EditorIOS.mm:
+        (WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.
+
+        * editing/mac/EditorMac.mm:
+        (WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.
+
+        * history/PageCache.cpp:
+        (WebCore::canCacheFrame): Use a reference.
+
+        * html/FileInputType.cpp:
+        (WebCore::FileInputType::handleDOMActivateEvent): Pass references.
+
+        * html/HTMLFormControlElement.cpp:
+        (WebCore::HTMLFormControlElement::formMethod): Use auto.
+
+        * html/HTMLFormElement.cpp:
+        (WebCore::HTMLFormElement::prepareForSubmission): Updated to use a return
+        values for textFieldValues intsead of an out argument with getTextFieldValues.
+        (WebCore::HTMLFormElement::textFieldValues): Renamed from getTextFieldValues
+        and changed to use a return value instead of an out argument.
+        (WebCore::HTMLFormElement::submit): Pass a reference.
+        (WebCore::HTMLFormElement::requestAutocomplete): Pass a Ref&amp;&amp;.
+        * html/HTMLFormElement.h: Updated for above changes.
+
+        * html/HTMLHtmlElement.cpp:
+        (WebCore::HTMLHtmlElement::insertedByParser): Use a reference.
+
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::process): Pass a reference.
+        (WebCore::HTMLLinkElement::setCSSStyleSheet): Use auto.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::loadResource): Use a reference.
+
+        * inspector/InspectorApplicationCacheAgent.cpp:
+        (WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus): Use a reference,
+        also update for struct-style member names withou m_ prefix.
+        (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests): Ditto.
+        (WebCore::InspectorApplicationCacheAgent::getManifestForFrame): Ditto.
+        (WebCore::InspectorApplicationCacheAgent::getApplicationCacheForFrame): Ditto.
+        (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache): Ditto.
+        (WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources): Ditto.
+        (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource): Ditto.
+        * inspector/InspectorApplicationCacheAgent.h: Updated for above changes.
+
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::updateApplicationCacheStatusImpl): Take a reference.
+        * inspector/InspectorInstrumentation.h: Updated for the above.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::DocumentLoader): Move much initialization to class definition.
+        (WebCore::DocumentLoader::originalRequest): Moved to header to make it inline.
+        (WebCore::DocumentLoader::originalRequestCopy): Ditto.
+        (WebCore::DocumentLoader::request): Ditto.
+        (WebCore::DocumentLoader::url): Ditto.
+        (WebCore::DocumentLoader::stopLoading): Pass a reference.
+        (WebCore::DocumentLoader::willSendRequest): Updated to take a raw pointer instead of a
+        PassRefPtr.
+        (WebCore::DocumentLoader::commitData): Call shouldUseMainResourceEncoding instead of
+        special casing WebArchive.
+        (WebCore::DocumentLoader::maybeCreateArchive): Pass references.
+        (WebCore::DocumentLoader::setArchive): Take Ref&amp;&amp; instead of PassRefPtr.
+        (WebCore::DocumentLoader::addAllArchiveResources): Take a reference instead
+        of a pointer.
+        (WebCore::DocumentLoader::popArchiveForSubframe): Return RefPtr instead of
+        PassRefPtr.
+        (WebCore::DocumentLoader::subresource): Ditto.
+        (WebCore::DocumentLoader::subresources): Return a Vector&lt;Ref&gt; instead of a
+        Vector&lt;RefPtr&gt;.
+        (WebCore::DocumentLoader::substituteResourceDeliveryTimerFired): Use move
+        instead of swap.
+        (WebCore::DocumentLoader::scheduleArchiveLoad): Use shouldLoadFromArchiveOnly
+        instead of a special case for each type of archive.
+        (WebCore::DocumentLoader::originalURL): Moved to header to make it inline.
+        (WebCore::DocumentLoader::responseURL): Ditto.
+        (WebCore::DocumentLoader::documentURL): Call shouldUseMainResourceURL instead of
+        special casing WebArchive.
+        (WebCore::DocumentLoader::responseMIMEType): Moved to header to make it inline.
+        (WebCore::DocumentLoader::currentContentType): Ditto.
+        (WebCore::DocumentLoader::contentFilter): Ditto.
+        (WebCore::DocumentLoader::getIconLoadDecisionForIconURL): Pass a reference.
+        (WebCore::DocumentLoader::getIconDataForIconURL): Ditto.
+        (WebCore::DocumentLoader::dispatchOnloadEvents): Use a reference.
+        (WebCore::DocumentLoader::unreachableURL): Moved to header to make it inline.
+        * loader/DocumentLoader.h: Updated for the above.
+
+        * loader/EmptyClients.cpp: Updated for changes to client interfaces.
+        * loader/EmptyClients.h: Ditto.
+
+        * loader/FormState.cpp:
+        (WebCore::FormState::FormState): Take references instead of PassRefPtr, also
+        take Vector&amp;&amp; instead of Vector&amp; when we want to take ownership and use move
+        instead of swap to do that.
+        (WebCore::FormState::create): Ditto.
+        * loader/FormState.h: Updated for the above. Also changed return values to be
+        references instead of pointers and members to be Ref instead of RefPtr.
+
+        * loader/FormSubmission.cpp:
+        (WebCore::FormSubmission::Attributes::parseMethodType): Updated for change
+        to the Method enumeration.
+        (WebCore::FormSubmission::Attributes::copyFrom): Deleted.
+        (WebCore::FormSubmission::FormSubmission): Use Ref&amp;&amp; instead of PassRefPtr.
+        (WebCore::FormSubmission::create): Use reference instead of pointer and
+        raw pointer instead of PassRefPtr. Also copy attributes using copy constructor
+        instead of an explicit copyFrom function.
+        (WebCore::FormSubmission::requestURL): Updated for change to the Method
+        enumeration.
+        (WebCore::FormSubmission::populateFrameLoadRequest): Ditto.
+        * loader/FormSubmission.h: Updated for the above changes. Made the Attributes
+        class copyable, since we copy it. Changed some functions to return references
+        instead of pointers and use Ref instead of RefPtr for data members.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::submitForm): Updated for changes to FormSubmission
+        and FormState.
+        (WebCore::FrameLoader::receivedFirstData): Ditto.
+        (WebCore::FrameLoader::loadFrameRequest): Ditto.
+        (WebCore::FrameLoader::loadResourceSynchronously): Ditto.
+        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): Ditto.
+
+        * loader/FrameLoaderClient.h: Use references, pointers, RefPtr, and Ref
+        instead of PassRefPtr. Removed unused empty dispatchDidFailToStartPlugin.
+
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::pushState): Take RefPtr&amp;&amp; instead of PassRefPtr.
+        (WebCore::HistoryController::replaceState): Ditto.
+        * loader/HistoryController.h: Updated for the above.
+
+        * loader/ImageLoader.cpp:
+        (WebCore::ImageLoader::updateFromElement): Pass a reference.
+
+        * loader/NavigationScheduler.cpp: Use refernces and Ref&amp;&amp; instead of
+        pointers and PassRefPtr.
+        (WebCore::ScheduledNavigation::ScheduledNavigation): Added an overload
+        that sests m_shouldOpenExternalURLsPolicy.
+        * loader/NavigationScheduler.h: Updated for the above.
+
+        * loader/ResourceLoader.cpp:
+        (WebCore::ResourceLoader::start): Use and pass references.
+        (WebCore::ResourceLoader::willSendRequest): Ditto.
+        (WebCore::ResourceLoader::didReceiveResponse): Ditto.
+        (WebCore::ResourceLoader::didFail): Ditto.
+
+        * loader/SubframeLoader.cpp:
+        (WebCore::SubframeLoader::createJavaAppletWidget): Return RefPtr instead
+        of PassRefPtr. Pass references instead of pointers.
+        (WebCore::SubframeLoader::loadOrRedirectSubframe): Ditto.
+        (WebCore::SubframeLoader::loadSubframe): Ditto.
+        (WebCore::SubframeLoader::document): Deleted. This was never really the
+        correct idiom for getting the appropriate document; hiding the dependency
+        on m_frame wasn't paing off.
+        (WebCore::SubframeLoader::loadPlugin): Pass reference instead of pointer.
+        (WebCore::SubframeLoader::shouldConvertInvalidURLsToBlank): Eliminated
+        unneeded null checking and complexity due to going through the document
+        instead of the frame for this check.
+        * loader/SubframeLoader.h: Updated for the above.
+
+        * loader/appcache/ApplicationCache.cpp:
+        (WebCore::ApplicationCache::ApplicationCache): Moved data member
+        initialization to the class definition.
+        (WebCore::ApplicationCache::~ApplicationCache): Pass a reference instead
+        of a pointer.
+        (WebCore::ApplicationCache::isComplete): Ditto.
+        (WebCore::ApplicationCache::setManifestResource): Take Ref&amp;&amp; instead of
+        PassRefPtr.
+        (WebCore::ApplicationCache::addResource): Ditto.
+        (WebCore::ApplicationCache::removeResource): Deleted. Was unused.
+        * loader/appcache/ApplicationCache.h: Updated for above changes.
+
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::ApplicationCacheGroup): Moved most
+        member initialization to the class definition.
+        (WebCore::ApplicationCacheGroup::~ApplicationCacheGroup): Pass a reference.
+        (WebCore::ApplicationCacheGroup::cacheForMainRequest): Removed
+        unnecessary preflight for removeFragmentIdentifier, which efficiently
+        does nothing if there is no identifier. Use early return.
+        (WebCore::ApplicationCacheGroup::fallbackCacheForMainRequest): More of
+        the same.
+        (WebCore::ApplicationCacheGroup::selectCache): Ditto, also take a reference,
+        and use event names instead of a special enumeration to poast events.
+        (WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL): Ditto.
+        (WebCore::ApplicationCacheGroup::finishedLoadingMainResource): Ditto.
+        (WebCore::ApplicationCacheGroup::failedLoadingMainResource): Ditto.
+        (WebCore::ApplicationCacheGroup::disassociateDocumentLoader): Ditto.
+        (WebCore::ApplicationCacheGroup::cacheDestroyed): Ditto.
+        (WebCore::ApplicationCacheGroup::stopLoadingInFrame): Ditto.
+        (WebCore::ApplicationCacheGroup::setNewestCache): Use Ref&amp;&amp; instead of
+        PassRefPtr.
+        (WebCore::ApplicationCacheGroup::makeObsolete): More of the same.
+        (WebCore::ApplicationCacheGroup::update): Ditto.
+        (WebCore::ApplicationCacheGroup::abort): Ditto.
+        (WebCore::ApplicationCacheGroup::didReceiveResponse): Ditto.
+        (WebCore::ApplicationCacheGroup::didFinishLoading): Ditto.
+        (WebCore::ApplicationCacheGroup::didFail): Ditto.
+        (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): Ditto.
+        (WebCore::ApplicationCacheGroup::manifestNotFound): Ditto.
+        (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): Ditto.
+        (WebCore::ApplicationCacheGroup::startLoadingEntry): Ditto.
+        (WebCore::ApplicationCacheGroup::deliverDelayedMainResources): Use a modern
+        for loop.
+        (WebCore::ApplicationCacheGroup::addEntry): Use auto and simplify logic
+        for adding.
+        (WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): Update since
+        function result is a reference.
+        (WebCore::ApplicationCacheGroup::scheduleReachedMaxAppCacheSizeCallback):
+        Use auto.
+        (WebCore::ApplicationCacheGroup::postListenerTask): Take event type instead of
+        taking a special enumeration.
+        * loader/appcache/ApplicationCacheGroup.h: Updated for the above.
+
+        * loader/appcache/ApplicationCacheHost.cpp:
+        (WebCore::ApplicationCacheHost::ApplicationCacheHost): Move most member
+        initialization to the class definition.
+        (WebCore::ApplicationCacheHost::~ApplicationCacheHost): Use reference.
+        (WebCore::ApplicationCacheHost::selectCacheWithoutManifest): Ditto.
+        (WebCore::ApplicationCacheHost::selectCacheWithManifest): Ditto.
+        (WebCore::ApplicationCacheHost::mainResourceDataReceived): Ditto.
+        (WebCore::ApplicationCacheHost::failedLoadingMainResource): Ditto.
+        (WebCore::ApplicationCacheHost::finishedLoadingMainResource): Ditto.
+        (WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect): Ditto.
+        (WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse): Ditto.
+        (WebCore::ApplicationCacheHost::createFileURL): Ditto.
+        (WebCore::ApplicationCacheHost::maybeLoadSynchronously): Ditto.
+        (WebCore::ApplicationCacheHost::notifyDOMApplicationCache): Take event
+        type instead of special enumeration.
+        (WebCore::ApplicationCacheHost::stopLoadingInFrame): Use reference.
+        (WebCore::ApplicationCacheHost::stopDeferringEvents): Updated to use
+        event types instead of special enumeration and also repaired possible
+        edge case where code in event handler somehow triggers additional events.
+        (WebCore::ApplicationCacheHost::resourceList): Renamed from fillResourceList
+        and changed to return a vector instead of populating one.
+        (WebCore::ApplicationCacheHost::applicationCacheInfo): Tweak coding style a bit.
+        (WebCore::createApplicationCacheEvent): Factored this helper out of
+        dispatchDOMEvent so we can use Ref instead of RefPtr.
+        (WebCore::ApplicationCacheHost::dispatchDOMEvent): Updated to recent event type
+        rather than receiving an event id and mapping it to a type.
+        (WebCore::ApplicationCacheHost::setApplicationCache): Take RefPtr&amp;&amp; instead of
+        PassRefPtr.
+        (WebCore::ApplicationCacheHost::update): Pass a reference.
+        (WebCore::ApplicationCacheHost::swapCache): Ditto.
+        (WebCore::ApplicationCacheHost::abort): Ditto.
+        * loader/appcache/ApplicationCacheHost.h: Updated for the above.
+
+        * loader/appcache/ApplicationCacheStorage.cpp:
+        (WebCore::ApplicationCacheStorage::loadCacheGroup): Pass a Ref instead of RefPtr.
+        (WebCore::ApplicationCacheStorage::cacheGroupForURL): Ditto.
+        (WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL): Ditto.
+        (WebCore::ApplicationCacheStorage::cacheGroupDestroyed): Take a reference.
+        (WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete): Ditto.
+        (WebCore::ApplicationCacheStorage::storeNewestCache): Ditto.
+        (WebCore::ApplicationCacheStorage::loadCache): Return RefPtr instead of PassRefPtr.
+        (WebCore::ApplicationCacheStorage::deleteCacheGroup): Pass a reference.
+        * loader/appcache/ApplicationCacheStorage.h: Updated for the above.
+
+        * loader/appcache/DOMApplicationCache.cpp:
+        (WebCore::DOMApplicationCache::DOMApplicationCache): Take a reference.
+        (WebCore::DOMApplicationCache::toEventType): Deleted.
+        * loader/appcache/DOMApplicationCache.h: Updated for the above. Made most
+        members private.
+
+        * loader/archive/Archive.cpp:
+        (WebCore::Archive::clearAllSubframeArchives): Use a set for the logic that
+        prevents us from walking the same archive more than once, rather than using
+        a vector. Left it recursive, though.
+        * loader/archive/Archive.h: Git rid of the type function, replacing it with
+        three functions for the four different policies we currently have about the
+        different archive types. Changed functions to take Ref&amp;&amp; instead of PassRefPtr
+        and return const Vector&lt;Ref&gt;&amp; instead of const Vector&lt;RefPtr&gt;&amp;, changing the
+        data members to match.
+
+        * loader/archive/ArchiveFactory.cpp:
+        (WebCore::createArchiveMIMETypesMap): Factored this out of the archiveMIMETypes
+        function so we don't need a boolean. Also use ASCIILiteral.
+        (WebCore::archiveMIMETypes): Updated to se the above.
+
+        * loader/archive/ArchiveResourceCollection.cpp:
+        (WebCore::ArchiveResourceCollection::addAllResources): Take a reference.
+        (WebCore::ArchiveResourceCollection::popSubframeArchive): Return RefPtr instead
+        of PassRefPtr.
+        * loader/archive/ArchiveResourceCollection.h: Updated for the above.
+
+        * loader/archive/cf/LegacyWebArchive.cpp:
+        (WebCore::LegacyWebArchive::createPropertyListRepresentation): Use auto and
+        fewer local variables, more references for argument types and return values.
+        (WebCore::LegacyWebArchive::createResourceResponseFromPropertyListData): Ditto.
+        (WebCore::LegacyWebArchive::createResource): Ditto.
+        (WebCore::LegacyWebArchive::create): Ditto.
+        (WebCore::LegacyWebArchive::extract): Ditto.
+        (WebCore::LegacyWebArchive::type): Deleted.
+        (WebCore::LegacyWebArchive::rawDataRepresentation): More of the same.
+        (WebCore::LegacyWebArchive::createFromSelection): Ditto.
+        * loader/archive/cf/LegacyWebArchive.h: Updated for the above. Also marked the
+        class final and added overrides for the four new policy member functions.
+
+        * loader/archive/mhtml/MHTMLArchive.cpp:
+        (WebCore::MHTMLArchive::create): Pass references.
+        (WebCore::MHTMLArchive::generateMHTMLData): Return RefPtr instead of
+        PassRefPtr.
+        * loader/archive/mhtml/MHTMLArchive.h: Updated for the above. Also marked the
+        class final and added overrides for the four new policy member functions.
+
+        * loader/archive/mhtml/MHTMLParser.cpp:
+        (WebCore::MHTMLParser::parseArchiveWithHeader): Pass Ref instead of RefPtr
+        to setMainResource and addSubframeArchive.
+        (WebCore::MHTMLParser::addResourceToArchive): Ditto.
+
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::restoreParsedStyleSheet): Return RefPtr instead
+        of PassRefPtr.
+        * loader/cache/CachedCSSStyleSheet.h: Updated for the above.
+
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::CachedResourceRequest::setInitiator): Take a reference instead of a
+        PassRefPtr.
+        * loader/cache/CachedResourceRequest.h: Updated for the above.
+
+        * loader/cocoa/DiskCacheMonitor.h: Removed. This is a duplicate, unused copy
+        of DiskCacheMonitorCocoa.h.
+
+        * loader/cocoa/DiskCacheMonitorCocoa.h: Removed unneeded exporting and virtual
+        member functions, made more things private, and changed return type to RefPtr
+        instead of PassRefPtr.
+        * loader/cocoa/DiskCacheMonitorCocoa.mm:
+        (WebCore::DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse):
+        Changed return type to RefPtr instead of PassRefPtr.
+
+        * loader/icon/IconDatabase.cpp:
+        (WebCore::IconDatabase::setIconDataForIconURL): Take raw pointer instead of
+        PassRefPtr.
+        (WebCore::IconDatabase::getOrCreateIconRecord): Return Ref instead of PassRefPtr.
+        (WebCore::IconDatabase::getImageDataForIconURLFromSQLDatabase): Return RefPtr
+        instead of PassRefPtr.
+        * loader/icon/IconDatabase.h: Updated for the above. Also marked functions final
+        instead of override.
+        * loader/icon/IconDatabaseBase.h: Ditto.
+
+        * loader/icon/PageURLRecord.cpp:
+        (WebCore::PageURLRecord::PageURLRecord): Moved initialization to the header.
+        (WebCore::PageURLRecord::~PageURLRecord): Wrote code here instead of calling
+        setIconRecord(nullptr).
+        (WebCore::PageURLRecord::setIconRecord): Take RefPtr&amp;&amp; instead of PassRefPtr.
+        * loader/icon/PageURLRecord.h: Updatd for the above.
+
+        * page/Chrome.cpp:
+        (WebCore::Chrome::runOpenPanel): Updated to take two references.
+        * page/Chrome.h: Ditto.
+        * page/ChromeClient.h: ditto.
+
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::applicationCache): Pass a reference.
+        (WebCore::DOMWindow::setLocation): Ditto.
+        (WebCore::DOMWindow::createWindow): Ditto.
+        (WebCore::DOMWindow::open): Ditto.
+
+        * page/EditorClient.h: Changed arguments to references instead of PassRefPtr.
+
+        * page/History.cpp:
+        (WebCore::History::stateObjectAdded): Pass an rvalue reference.
+
+        * page/Location.cpp:
+        (WebCore::Location::reload): Pass reference instead of pointer.
+        (WebCore::Location::setLocation): Ditto.
+
+        * platform/URL.cpp:
+        (WebCore::URL::setFragmentIdentifier): Take a StringView rather than
+        a String, which is more flexible for callers. Also eliminated an unneeded
+        string allocation when the old string had a fragment that is being replaced.
+        * platform/URL.h: Updated for the above.
+
+        * replay/ReplayInputDispatchMethods.cpp:
+        (WebCore::InitialNavigation::dispatch): Pass reference.
+        * svg/SVGFEImageElement.cpp:
+        (WebCore::SVGFEImageElement::requestImageResource): Ditto.
+        * svg/SVGFontFaceUriElement.cpp:
+        (WebCore::SVGFontFaceUriElement::loadFont): Ditto.
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::updateExternalDocument): Ditto.
+
</ins><span class="cx"> 2017-01-16  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Make opaque root scanning truly constraint-based
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/dom/Document.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -3136,7 +3136,7 @@
</span><span class="cx">             else
</span><span class="cx">                 completedURL = completeURL(urlString);
</span><span class="cx">             if (!protocolIsJavaScript(completedURL))
</span><del>-                frame-&gt;navigationScheduler().scheduleRedirect(this, delay, completedURL);
</del><ins>+                frame-&gt;navigationScheduler().scheduleRedirect(*this, delay, completedURL);
</ins><span class="cx">             else {
</span><span class="cx">                 String message = &quot;Refused to refresh &quot; + m_url.stringCenterEllipsizedToLength() + &quot; to a javascript: URL&quot;;
</span><span class="cx">                 addConsoleMessage(MessageSource::Security, MessageLevel::Error, message);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">     for (size_t i = size; i; --i)
</span><span class="cx">         m_commands[i - 1]-&gt;doUnapply();
</span><span class="cx"> 
</span><del>-    frame-&gt;editor().unappliedEditing(this);
</del><ins>+    frame-&gt;editor().unappliedEditing(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache::accessibilityEnabled())
</span><span class="cx">         m_replacedText.postTextStateChangeNotificationForUnapply(m_document-&gt;existingAXObjectCache());
</span><span class="lines">@@ -265,7 +265,7 @@
</span><span class="cx">     for (auto&amp; command : m_commands)
</span><span class="cx">         command-&gt;doReapply();
</span><span class="cx"> 
</span><del>-    frame-&gt;editor().reappliedEditing(this);
</del><ins>+    frame-&gt;editor().reappliedEditing(*this);
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache::accessibilityEnabled())
</span><span class="cx">         m_replacedText.postTextStateChangeNotificationForReapply(m_document-&gt;existingAXObjectCache());
</span><span class="lines">@@ -416,14 +416,14 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EditCommandComposition* CompositeEditCommand::ensureComposition()
</del><ins>+EditCommandComposition&amp; CompositeEditCommand::ensureComposition()
</ins><span class="cx"> {
</span><del>-    CompositeEditCommand* command = this;
-    while (command &amp;&amp; command-&gt;parent())
-        command = command-&gt;parent();
</del><ins>+    auto* command = this;
+    while (auto* parent = command-&gt;parent())
+        command = parent;
</ins><span class="cx">     if (!command-&gt;m_composition)
</span><span class="cx">         command-&gt;m_composition = EditCommandComposition::create(document(), startingSelection(), endingSelection(), editingAction());
</span><del>-    return command-&gt;m_composition.get();
</del><ins>+    return *command-&gt;m_composition;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool CompositeEditCommand::isCreateLinkCommand() const
</span><span class="lines">@@ -465,7 +465,7 @@
</span><span class="cx">     command-&gt;doApply();
</span><span class="cx">     if (command-&gt;isSimpleEditCommand()) {
</span><span class="cx">         command-&gt;setParent(nullptr);
</span><del>-        ensureComposition()-&gt;append(toSimpleEditCommand(command.get()));
</del><ins>+        ensureComposition().append(toSimpleEditCommand(command.get()));
</ins><span class="cx">     }
</span><span class="cx">     m_commands.append(WTFMove(command));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">     void apply();
</span><span class="cx">     bool isFirstCommand(EditCommand* command) { return !m_commands.isEmpty() &amp;&amp; m_commands.first() == command; }
</span><span class="cx">     EditCommandComposition* composition() const;
</span><del>-    EditCommandComposition* ensureComposition();
</del><ins>+    EditCommandComposition&amp; ensureComposition();
</ins><span class="cx"> 
</span><span class="cx">     virtual bool isCreateLinkCommand() const;
</span><span class="cx">     virtual bool isTypingCommand() const;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/Editor.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -996,23 +996,23 @@
</span><span class="cx">     return dispatchBeforeInputEvents(composition.startingRootEditableElement(), composition.endingRootEditableElement(), &quot;historyUndo&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Editor::unappliedEditing(PassRefPtr&lt;EditCommandComposition&gt; cmd)
</del><ins>+void Editor::unappliedEditing(EditCommandComposition&amp; composition)
</ins><span class="cx"> {
</span><span class="cx">     document().updateLayout();
</span><span class="cx"> 
</span><del>-    notifyTextFromControls(cmd-&gt;startingRootEditableElement(), cmd-&gt;endingRootEditableElement());
</del><ins>+    notifyTextFromControls(composition.startingRootEditableElement(), composition.endingRootEditableElement());
</ins><span class="cx"> 
</span><del>-    VisibleSelection newSelection(cmd-&gt;startingSelection());
</del><ins>+    VisibleSelection newSelection(composition.startingSelection());
</ins><span class="cx">     changeSelectionAfterCommand(newSelection, FrameSelection::defaultSetSelectionOptions());
</span><del>-    dispatchInputEvents(cmd-&gt;startingRootEditableElement(), cmd-&gt;endingRootEditableElement(), &quot;historyUndo&quot;);
</del><ins>+    dispatchInputEvents(composition.startingRootEditableElement(), composition.endingRootEditableElement(), &quot;historyUndo&quot;);
</ins><span class="cx"> 
</span><span class="cx">     updateEditorUINowIfScheduled();
</span><span class="cx"> 
</span><del>-    m_alternativeTextController-&gt;respondToUnappliedEditing(cmd.get());
</del><ins>+    m_alternativeTextController-&gt;respondToUnappliedEditing(&amp;composition);
</ins><span class="cx"> 
</span><span class="cx">     m_lastEditCommand = nullptr;
</span><del>-    if (client())
-        client()-&gt;registerRedoStep(cmd);
</del><ins>+    if (auto* client = this-&gt;client())
+        client-&gt;registerRedoStep(composition);
</ins><span class="cx">     respondToChangedContents(newSelection);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1021,21 +1021,21 @@
</span><span class="cx">     return dispatchBeforeInputEvents(composition.startingRootEditableElement(), composition.endingRootEditableElement(), &quot;historyRedo&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Editor::reappliedEditing(PassRefPtr&lt;EditCommandComposition&gt; cmd)
</del><ins>+void Editor::reappliedEditing(EditCommandComposition&amp; composition)
</ins><span class="cx"> {
</span><span class="cx">     document().updateLayout();
</span><span class="cx"> 
</span><del>-    notifyTextFromControls(cmd-&gt;startingRootEditableElement(), cmd-&gt;endingRootEditableElement());
</del><ins>+    notifyTextFromControls(composition.startingRootEditableElement(), composition.endingRootEditableElement());
</ins><span class="cx"> 
</span><del>-    VisibleSelection newSelection(cmd-&gt;endingSelection());
</del><ins>+    VisibleSelection newSelection(composition.endingSelection());
</ins><span class="cx">     changeSelectionAfterCommand(newSelection, FrameSelection::defaultSetSelectionOptions());
</span><del>-    dispatchInputEvents(cmd-&gt;startingRootEditableElement(), cmd-&gt;endingRootEditableElement(), &quot;historyRedo&quot;);
</del><ins>+    dispatchInputEvents(composition.startingRootEditableElement(), composition.endingRootEditableElement(), &quot;historyRedo&quot;);
</ins><span class="cx">     
</span><span class="cx">     updateEditorUINowIfScheduled();
</span><span class="cx"> 
</span><span class="cx">     m_lastEditCommand = nullptr;
</span><del>-    if (client())
-        client()-&gt;registerUndoStep(cmd);
</del><ins>+    if (auto* client = this-&gt;client())
+        client-&gt;registerUndoStep(composition);
</ins><span class="cx">     respondToChangedContents(newSelection);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/Editor.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -99,10 +99,12 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><ins>+
</ins><span class="cx"> struct FragmentAndResources {
</span><span class="cx">     RefPtr&lt;DocumentFragment&gt; fragment;
</span><del>-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; resources;
</del><ins>+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; resources;
</ins><span class="cx"> };
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> class Editor {
</span><span class="lines">@@ -206,8 +208,8 @@
</span><span class="cx">     bool willReapplyEditing(const EditCommandComposition&amp;) const;
</span><span class="cx"> 
</span><span class="cx">     void appliedEditing(PassRefPtr&lt;CompositeEditCommand&gt;);
</span><del>-    void unappliedEditing(PassRefPtr&lt;EditCommandComposition&gt;);
-    void reappliedEditing(PassRefPtr&lt;EditCommandComposition&gt;);
</del><ins>+    void unappliedEditing(EditCommandComposition&amp;);
+    void reappliedEditing(EditCommandComposition&amp;);
</ins><span class="cx">     void unappliedSpellCorrection(const VisibleSelection&amp; selectionOfCorrected, const String&amp; corrected, const String&amp; correction);
</span><span class="cx"> 
</span><span class="cx">     // This is off by default, since most editors want this behavior (originally matched IE but not Firefox).
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaEditorCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -285,11 +285,9 @@
</span><span class="cx"> 
</span><span class="cx">     auto fragmentAndResources = createFragment(string);
</span><span class="cx"> 
</span><del>-    if (DocumentLoader* loader = m_frame.loader().documentLoader()) {
-        for (auto&amp; resource : fragmentAndResources.resources) {
-            if (resource)
-                loader-&gt;addArchiveResource(resource.releaseNonNull());
-        }
</del><ins>+    if (auto* loader = m_frame.loader().documentLoader()) {
+        for (auto&amp; resource : fragmentAndResources.resources)
+            loader-&gt;addArchiveResource(WTFMove(resource));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (wasImagesEnabled)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -262,27 +262,25 @@
</span><span class="cx">     if (!buffer)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;LegacyWebArchive&gt; archive = LegacyWebArchive::create(URL(), *buffer);
</del><ins>+    auto archive = LegacyWebArchive::create(URL(), *buffer);
</ins><span class="cx">     if (!archive)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ArchiveResource&gt; mainResource = archive-&gt;mainResource();
</del><ins>+    auto* mainResource = archive-&gt;mainResource();
</ins><span class="cx">     if (!mainResource)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    const String&amp; type = mainResource-&gt;mimeType();
</del><ins>+    auto&amp; type = mainResource-&gt;mimeType();
+    if (!frame.loader().client().canShowMIMETypeAsHTML(type))
+        return false;
</ins><span class="cx"> 
</span><del>-    if (frame.loader().client().canShowMIMETypeAsHTML(type)) {
-        // FIXME: The code in createFragmentAndAddResources calls setDefersLoading(true). Don't we need that here?
-        if (DocumentLoader* loader = frame.loader().documentLoader())
-            loader-&gt;addAllArchiveResources(archive.get());
</del><ins>+    // FIXME: The code in createFragmentAndAddResources calls setDefersLoading(true). Don't we need that here?
+    if (auto* loader = frame.loader().documentLoader())
+        loader-&gt;addAllArchiveResources(*archive);
</ins><span class="cx"> 
</span><del>-        String markupString = String::fromUTF8(mainResource-&gt;data().data(), mainResource-&gt;data().size());
-        addFragment(createFragmentFromMarkup(*frame.document(), markupString, mainResource-&gt;url(), DisallowScriptingAndPluginContent));
-        return true;
-    }
-
-    return false;
</del><ins>+    auto markupString = String::fromUTF8(mainResource-&gt;data().data(), mainResource-&gt;data().size());
+    addFragment(createFragmentFromMarkup(*frame.document(), markupString, mainResource-&gt;url(), DisallowScriptingAndPluginContent));
+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Editor::WebContentReader::readFilenames(const Vector&lt;String&gt;&amp;)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -328,7 +328,7 @@
</span><span class="cx">     if (!buffer)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;LegacyWebArchive&gt; archive = LegacyWebArchive::create(URL(), *buffer);
</del><ins>+    auto archive = LegacyWebArchive::create(URL(), *buffer);
</ins><span class="cx">     if (!archive)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx">     if (frame.loader().client().canShowMIMETypeAsHTML(type)) {
</span><span class="cx">         // FIXME: The code in createFragmentAndAddResources calls setDefersLoading(true). Don't we need that here?
</span><span class="cx">         if (DocumentLoader* loader = frame.loader().documentLoader())
</span><del>-            loader-&gt;addAllArchiveResources(archive.get());
</del><ins>+            loader-&gt;addAllArchiveResources(*archive);
</ins><span class="cx"> 
</span><span class="cx">         String markupString = String::fromUTF8(mainResource-&gt;data().data(), mainResource-&gt;data().size());
</span><span class="cx">         fragment = createFragmentFromMarkup(*frame.document(), markupString, mainResource-&gt;url(), DisallowScriptingAndPluginContent);
</span></span></pre></div>
<a id="trunkSourceWebCorehistoryPageCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/history/PageCache.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/history/PageCache.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/history/PageCache.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx">     }
</span><span class="cx">     // FIXME: We should investigating caching frames that have an associated
</span><span class="cx">     // application cache. &lt;rdar://problem/5917899&gt; tracks that work.
</span><del>-    if (!documentLoader-&gt;applicationCacheHost()-&gt;canCacheInPageCache()) {
</del><ins>+    if (!documentLoader-&gt;applicationCacheHost().canCacheInPageCache()) {
</ins><span class="cx">         PCLOG(&quot;   -The DocumentLoader uses an application cache&quot;);
</span><span class="cx">         logPageCacheFailureDiagnosticMessage(diagnosticLoggingClient, DiagnosticLoggingKeys::applicationCacheKey());
</span><span class="cx">         isCacheable = false;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlFileInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FileInputType.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FileInputType.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/FileInputType.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx">     if (!ScriptController::processingUserGesture())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (Chrome* chrome = this-&gt;chrome()) {
</del><ins>+    if (auto* chrome = this-&gt;chrome()) {
</ins><span class="cx">         FileChooserSettings settings;
</span><span class="cx">         HTMLInputElement&amp; input = element();
</span><span class="cx">         settings.allowsMultipleFiles = input.hasAttributeWithoutSynchronization(multipleAttr);
</span><span class="lines">@@ -201,9 +201,8 @@
</span><span class="cx"> #if ENABLE(MEDIA_CAPTURE)
</span><span class="cx">         settings.mediaCaptureType = input.mediaCaptureType();
</span><span class="cx"> #endif
</span><del>-
</del><span class="cx">         applyFileChooserSettings(settings);
</span><del>-        chrome-&gt;runOpenPanel(input.document().frame(), m_fileChooser);
</del><ins>+        chrome-&gt;runOpenPanel(*input.document().frame(), *m_fileChooser);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     event.setDefaultHandled();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLFormControlElement::formMethod() const
</span><span class="cx"> {
</span><del>-    const AtomicString&amp; formMethodAttr = attributeWithoutSynchronization(formmethodAttr);
</del><ins>+    auto&amp; formMethodAttr = attributeWithoutSynchronization(formmethodAttr);
</ins><span class="cx">     if (formMethodAttr.isNull())
</span><span class="cx">         return emptyString();
</span><span class="cx">     return FormSubmission::Attributes::methodString(FormSubmission::Attributes::parseMethodType(formMethodAttr));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLFormElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -289,12 +289,11 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    StringPairVector controlNamesAndValues;
-    getTextFieldValues(controlNamesAndValues);
-    auto formState = FormState::create(this, controlNamesAndValues, &amp;document(), NotSubmittedByJavaScript);
</del><ins>+    auto formState = FormState::create(*this, textFieldValues(), document(), NotSubmittedByJavaScript);
</ins><span class="cx">     frame-&gt;loader().client().dispatchWillSendSubmitEvent(WTFMove(formState));
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;HTMLFormElement&gt; protectedThis(*this);
</span><ins>+
</ins><span class="cx">     // Event handling can result in m_shouldSubmit becoming true, regardless of dispatchEvent() return value.
</span><span class="cx">     if (dispatchEvent(Event::create(eventNames().submitEvent, true, true)))
</span><span class="cx">         m_shouldSubmit = true;
</span><span class="lines">@@ -315,20 +314,20 @@
</span><span class="cx">     submit(0, false, ScriptController::processingUserGesture(), SubmittedByJavaScript);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLFormElement::getTextFieldValues(StringPairVector&amp; fieldNamesAndValues) const
</del><ins>+StringPairVector HTMLFormElement::textFieldValues() const
</ins><span class="cx"> {
</span><del>-    ASSERT_ARG(fieldNamesAndValues, fieldNamesAndValues.isEmpty());
-
-    fieldNamesAndValues.reserveCapacity(m_associatedElements.size());
</del><ins>+    StringPairVector result;
+    result.reserveInitialCapacity(m_associatedElements.size());
</ins><span class="cx">     for (auto&amp; associatedElement : m_associatedElements) {
</span><del>-        HTMLElement&amp; element = associatedElement-&gt;asHTMLElement();
</del><ins>+        auto&amp; element = associatedElement-&gt;asHTMLElement();
</ins><span class="cx">         if (!is&lt;HTMLInputElement&gt;(element))
</span><span class="cx">             continue;
</span><del>-        HTMLInputElement&amp; input = downcast&lt;HTMLInputElement&gt;(element);
</del><ins>+        auto&amp; input = downcast&lt;HTMLInputElement&gt;(element);
</ins><span class="cx">         if (!input.isTextField())
</span><span class="cx">             continue;
</span><del>-        fieldNamesAndValues.append(std::make_pair(input.name().string(), input.value()));
</del><ins>+        result.uncheckedAppend({ input.name().string(), input.value() });
</ins><span class="cx">     }
</span><ins>+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::submit(Event* event, bool activateSubmitButton, bool processingUserGesture, FormSubmissionTrigger formSubmissionTrigger)
</span><span class="lines">@@ -364,10 +363,11 @@
</span><span class="cx">     if (needButtonActivation &amp;&amp; firstSuccessfulSubmitButton)
</span><span class="cx">         firstSuccessfulSubmitButton-&gt;setActivatedSubmit(true);
</span><span class="cx"> 
</span><del>-    LockHistory lockHistory = processingUserGesture ? LockHistory::No : LockHistory::Yes;
-    Ref&lt;HTMLFormElement&gt; protectedThis(*this); // Form submission can execute arbitary JavaScript.
-    frame-&gt;loader().submitForm(FormSubmission::create(this, m_attributes, event, lockHistory, formSubmissionTrigger));
</del><ins>+    auto protectedThis = makeRef(*this); // Form submission can execute arbitary JavaScript.
</ins><span class="cx"> 
</span><ins>+    auto shouldLockHistory = processingUserGesture ? LockHistory::No : LockHistory::Yes;
+    frame-&gt;loader().submitForm(FormSubmission::create(*this, m_attributes, event, shouldLockHistory, formSubmissionTrigger));
+
</ins><span class="cx">     if (needButtonActivation &amp;&amp; firstSuccessfulSubmitButton)
</span><span class="cx">         firstSuccessfulSubmitButton-&gt;setActivatedSubmit(false);
</span><span class="cx"> 
</span><span class="lines">@@ -439,8 +439,8 @@
</span><span class="cx">     StringPairVector controlNamesAndValues;
</span><span class="cx">     getTextFieldValues(controlNamesAndValues);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;FormState&gt; formState = FormState::create(this, controlNamesAndValues, &amp;document(), SubmittedByJavaScript);
-    frame-&gt;loader().client().didRequestAutocomplete(formState.release());
</del><ins>+    auto formState = FormState::create(this, controlNamesAndValues, &amp;document(), SubmittedByJavaScript);
+    frame-&gt;loader().client().didRequestAutocomplete(WTFMove(formState));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::finishRequestAutocomplete(AutocompleteResult result)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLFormElement.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">     const Vector&lt;FormAssociatedElement*&gt;&amp; associatedElements() const { return m_associatedElements; }
</span><span class="cx">     const Vector&lt;HTMLImageElement*&gt;&amp; imageElements() const { return m_imageElements; }
</span><span class="cx"> 
</span><del>-    void getTextFieldValues(StringPairVector&amp; fieldNamesAndValues) const;
</del><ins>+    StringPairVector textFieldValues() const;
</ins><span class="cx"> 
</span><span class="cx">     static HTMLFormElement* findClosestFormAncestor(const Element&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLHtmlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLHtmlElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLHtmlElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLHtmlElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -66,15 +66,15 @@
</span><span class="cx">     if (!document().frame())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    DocumentLoader* documentLoader = document().frame()-&gt;loader().documentLoader();
</del><ins>+    auto* documentLoader = document().frame()-&gt;loader().documentLoader();
</ins><span class="cx">     if (!documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; manifest = attributeWithoutSynchronization(manifestAttr);
</del><ins>+    auto&amp; manifest = attributeWithoutSynchronization(manifestAttr);
</ins><span class="cx">     if (manifest.isEmpty())
</span><del>-        documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithoutManifest();
</del><ins>+        documentLoader-&gt;applicationCacheHost().selectCacheWithoutManifest();
</ins><span class="cx">     else
</span><del>-        documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithManifest(document().completeURL(manifest));
</del><ins>+        documentLoader-&gt;applicationCacheHost().selectCacheWithManifest(document().completeURL(manifest));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx">         if (!isActive)
</span><span class="cx">             priority = ResourceLoadPriority::VeryLow;
</span><span class="cx">         CachedResourceRequest request(url, CachedResourceLoader::defaultCachedResourceOptions(), priority, WTFMove(charset));
</span><del>-        request.setInitiator(this);
</del><ins>+        request.setInitiator(*this);
</ins><span class="cx"> 
</span><span class="cx">         if (document().contentSecurityPolicy()-&gt;allowStyleWithNonce(attributeWithoutSynchronization(HTMLNames::nonceAttr))) {
</span><span class="cx">             ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx">     CSSParserContext parserContext(document(), baseURL, charset);
</span><span class="cx">     auto cachePolicy = frame-&gt;loader().subresourceCachePolicy();
</span><span class="cx"> 
</span><del>-    if (RefPtr&lt;StyleSheetContents&gt; restoredSheet = const_cast&lt;CachedCSSStyleSheet*&gt;(cachedStyleSheet)-&gt;restoreParsedStyleSheet(parserContext, cachePolicy)) {
</del><ins>+    if (auto restoredSheet = const_cast&lt;CachedCSSStyleSheet*&gt;(cachedStyleSheet)-&gt;restoreParsedStyleSheet(parserContext, cachePolicy)) {
</ins><span class="cx">         ASSERT(restoredSheet-&gt;isCacheable());
</span><span class="cx">         ASSERT(!restoredSheet-&gt;isLoading());
</span><span class="cx">         initializeStyleSheet(restoredSheet.releaseNonNull(), *cachedStyleSheet);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1428,11 +1428,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><del>-    DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
-
-    if (documentLoader) {
-        auto blockedStatus = page-&gt;userContentProvider().processContentExtensionRulesForLoad(url, ResourceType::Media, *documentLoader);
-        if (blockedStatus.blockedLoad) {
</del><ins>+    if (auto* documentLoader = frame-&gt;loader().documentLoader()) {
+        if (page-&gt;userContentProvider().processContentExtensionRulesForLoad(url, ResourceType::Media, *documentLoader).blockedLoad) {
</ins><span class="cx">             mediaLoadingFailed(MediaPlayer::FormatError);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="lines">@@ -1442,11 +1439,9 @@
</span><span class="cx">     // The resource fetch algorithm 
</span><span class="cx">     m_networkState = NETWORK_LOADING;
</span><span class="cx"> 
</span><del>-    // If the url should be loaded from the application cache, pass the url of the cached file
-    // to the media engine.
-    ApplicationCacheHost* cacheHost = frame-&gt;loader().documentLoader()-&gt;applicationCacheHost();
</del><ins>+    // If the URL should be loaded from the application cache, pass the URL of the cached file to the media engine.
</ins><span class="cx">     ApplicationCacheResource* resource = nullptr;
</span><del>-    if (cacheHost &amp;&amp; cacheHost-&gt;shouldLoadResourceFromApplicationCache(ResourceRequest(url), resource)) {
</del><ins>+    if (frame-&gt;loader().documentLoader()-&gt;applicationCacheHost().shouldLoadResourceFromApplicationCache(ResourceRequest(url), resource)) {
</ins><span class="cx">         // Resources that are not present in the manifest will always fail to load (at least, after the
</span><span class="cx">         // cache has been primed the first time), making the testing of offline applications simpler.
</span><span class="cx">         if (!resource || resource-&gt;path().isEmpty()) {
</span><span class="lines">@@ -1460,7 +1455,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_firstTimePlaying = true;
</span><span class="cx"> 
</span><del>-    // Set m_currentSrc *before* changing to the cache url, the fact that we are loading from the app
</del><ins>+    // Set m_currentSrc *before* changing to the cache URL, the fact that we are loading from the app
</ins><span class="cx">     // cache is an internal detail not exposed through the media element API.
</span><span class="cx">     m_currentSrc = url;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorApplicationCacheAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -68,16 +68,17 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorApplicationCacheAgent::updateApplicationCacheStatus(Frame* frame)
</span><span class="cx"> {
</span><del>-    DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
</del><ins>+    if (!frame)
+        return;
+    auto* documentLoader = frame-&gt;loader().documentLoader();
</ins><span class="cx">     if (!documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ApplicationCacheHost* host = documentLoader-&gt;applicationCacheHost();
-    ApplicationCacheHost::Status status = host-&gt;status();
-    ApplicationCacheHost::CacheInfo info = host-&gt;applicationCacheInfo();
</del><ins>+    auto&amp; host = documentLoader-&gt;applicationCacheHost();
+    int status = host.status();
+    auto manifestURL = host.applicationCacheInfo().manifest.string();
</ins><span class="cx"> 
</span><del>-    String manifestURL = info.m_manifest.string();
-    m_frontendDispatcher-&gt;applicationCacheStatusUpdated(m_pageAgent-&gt;frameId(frame), manifestURL, static_cast&lt;int&gt;(status));
</del><ins>+    m_frontendDispatcher-&gt;applicationCacheStatusUpdated(m_pageAgent-&gt;frameId(frame), manifestURL, status);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorApplicationCacheAgent::networkStateChanged()
</span><span class="lines">@@ -91,20 +92,18 @@
</span><span class="cx">     result = Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt;::create();
</span><span class="cx"> 
</span><span class="cx">     for (Frame* frame = &amp;m_pageAgent-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</span><del>-        DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
</del><ins>+        auto* documentLoader = frame-&gt;loader().documentLoader();
</ins><span class="cx">         if (!documentLoader)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        ApplicationCacheHost* host = documentLoader-&gt;applicationCacheHost();
-        ApplicationCacheHost::CacheInfo info = host-&gt;applicationCacheInfo();
-        String manifestURL = info.m_manifest.string();
</del><ins>+        auto&amp; host = documentLoader-&gt;applicationCacheHost();
+        String manifestURL = host.applicationCacheInfo().manifest.string();
</ins><span class="cx">         if (!manifestURL.isEmpty()) {
</span><del>-            Ref&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt; value = Inspector::Protocol::ApplicationCache::FrameWithManifest::create()
</del><ins>+            result-&gt;addItem(Inspector::Protocol::ApplicationCache::FrameWithManifest::create()
</ins><span class="cx">                 .setFrameId(m_pageAgent-&gt;frameId(frame))
</span><span class="cx">                 .setManifestURL(manifestURL)
</span><del>-                .setStatus(static_cast&lt;int&gt;(host-&gt;status()))
-                .release();
-            result-&gt;addItem(WTFMove(value));
</del><ins>+                .setStatus(static_cast&lt;int&gt;(host.status()))
+                .release());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -124,44 +123,36 @@
</span><span class="cx">     if (!documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ApplicationCacheHost::CacheInfo info = documentLoader-&gt;applicationCacheHost()-&gt;applicationCacheInfo();
-    *manifestURL = info.m_manifest.string();
</del><ins>+    *manifestURL = documentLoader-&gt;applicationCacheHost().applicationCacheInfo().manifest.string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorApplicationCacheAgent::getApplicationCacheForFrame(ErrorString&amp; errorString, const String&amp; frameId, RefPtr&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt;&amp; applicationCache)
</span><span class="cx"> {
</span><del>-    DocumentLoader* documentLoader = assertFrameWithDocumentLoader(errorString, frameId);
</del><ins>+    auto* documentLoader = assertFrameWithDocumentLoader(errorString, frameId);
</ins><span class="cx">     if (!documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ApplicationCacheHost* host = documentLoader-&gt;applicationCacheHost();
-    ApplicationCacheHost::CacheInfo info = host-&gt;applicationCacheInfo();
-
-    ApplicationCacheHost::ResourceInfoList resources;
-    host-&gt;fillResourceList(&amp;resources);
-
-    applicationCache = buildObjectForApplicationCache(resources, info);
</del><ins>+    auto&amp; host = documentLoader-&gt;applicationCacheHost();
+    applicationCache = buildObjectForApplicationCache(host.resourceList(), host.applicationCacheInfo());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources, const ApplicationCacheHost::CacheInfo&amp; applicationCacheInfo)
</del><ins>+Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCache(const Vector&lt;ApplicationCacheHost::ResourceInfo&gt;&amp; applicationCacheResources, const ApplicationCacheHost::CacheInfo&amp; applicationCacheInfo)
</ins><span class="cx"> {
</span><span class="cx">     return Inspector::Protocol::ApplicationCache::ApplicationCache::create()
</span><del>-        .setManifestURL(applicationCacheInfo.m_manifest.string())
-        .setSize(applicationCacheInfo.m_size)
-        .setCreationTime(applicationCacheInfo.m_creationTime)
-        .setUpdateTime(applicationCacheInfo.m_updateTime)
</del><ins>+        .setManifestURL(applicationCacheInfo.manifest.string())
+        .setSize(applicationCacheInfo.size)
+        .setCreationTime(applicationCacheInfo.creationTime)
+        .setUpdateTime(applicationCacheInfo.updateTime)
</ins><span class="cx">         .setResources(buildArrayForApplicationCacheResources(applicationCacheResources))
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;&gt; InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp; applicationCacheResources)
</del><ins>+Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;&gt; InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources(const Vector&lt;ApplicationCacheHost::ResourceInfo&gt;&amp; applicationCacheResources)
</ins><span class="cx"> {
</span><del>-    auto resources = Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;::create();
-
-    for (const auto&amp; resourceInfo : applicationCacheResources)
-        resources-&gt;addItem(buildObjectForApplicationCacheResource(resourceInfo));
-
-    return resources;
</del><ins>+    auto result = Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;::create();
+    for (auto&amp; info : applicationCacheResources)
+        result-&gt;addItem(buildObjectForApplicationCacheResource(info));
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt; InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp; resourceInfo)
</span><span class="lines">@@ -168,24 +159,24 @@
</span><span class="cx"> {
</span><span class="cx">     StringBuilder types;
</span><span class="cx"> 
</span><del>-    if (resourceInfo.m_isMaster)
</del><ins>+    if (resourceInfo.isMaster)
</ins><span class="cx">         types.appendLiteral(&quot;Master &quot;);
</span><span class="cx"> 
</span><del>-    if (resourceInfo.m_isManifest)
</del><ins>+    if (resourceInfo.isManifest)
</ins><span class="cx">         types.appendLiteral(&quot;Manifest &quot;);
</span><span class="cx"> 
</span><del>-    if (resourceInfo.m_isFallback)
</del><ins>+    if (resourceInfo.isFallback)
</ins><span class="cx">         types.appendLiteral(&quot;Fallback &quot;);
</span><span class="cx"> 
</span><del>-    if (resourceInfo.m_isForeign)
</del><ins>+    if (resourceInfo.isForeign)
</ins><span class="cx">         types.appendLiteral(&quot;Foreign &quot;);
</span><span class="cx"> 
</span><del>-    if (resourceInfo.m_isExplicit)
</del><ins>+    if (resourceInfo.isExplicit)
</ins><span class="cx">         types.appendLiteral(&quot;Explicit &quot;);
</span><span class="cx"> 
</span><span class="cx">     return Inspector::Protocol::ApplicationCache::ApplicationCacheResource::create()
</span><del>-        .setUrl(resourceInfo.m_resource.string())
-        .setSize(static_cast&lt;int&gt;(resourceInfo.m_size))
</del><ins>+        .setUrl(resourceInfo.resource.string())
+        .setSize(static_cast&lt;int&gt;(resourceInfo.size))
</ins><span class="cx">         .setType(types.toString())
</span><span class="cx">         .release();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorApplicationCacheAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -62,8 +62,8 @@
</span><span class="cx">     void getApplicationCacheForFrame(ErrorString&amp;, const String&amp; frameId, RefPtr&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt;&amp;) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt; buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&amp;, const ApplicationCacheHost::CacheInfo&amp;);
-    Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;&gt; buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&amp;);
</del><ins>+    Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCache&gt; buildObjectForApplicationCache(const Vector&lt;ApplicationCacheHost::ResourceInfo&gt;&amp;, const ApplicationCacheHost::CacheInfo&amp;);
+    Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt;&gt; buildArrayForApplicationCacheResources(const Vector&lt;ApplicationCacheHost::ResourceInfo&gt;&amp;);
</ins><span class="cx">     Ref&lt;Inspector::Protocol::ApplicationCache::ApplicationCacheResource&gt; buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&amp;);
</span><span class="cx"> 
</span><span class="cx">     DocumentLoader* assertFrameWithDocumentLoader(ErrorString&amp;, const String&amp; frameId);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx"> * Copyright (C) 2011 Google Inc. All rights reserved.
</span><del>-* Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
</del><ins>+* Copyright (C) 2014-2017 Apple Inc. All rights reserved.
</ins><span class="cx"> *
</span><span class="cx"> * Redistribution and use in source and binary forms, with or without
</span><span class="cx"> * modification, are permitted provided that the following conditions are
</span><span class="lines">@@ -1073,10 +1073,10 @@
</span><span class="cx">         applicationCacheAgent-&gt;networkStateChanged();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorInstrumentation::updateApplicationCacheStatusImpl(InstrumentingAgents&amp; instrumentingAgents, Frame* frame)
</del><ins>+void InspectorInstrumentation::updateApplicationCacheStatusImpl(InstrumentingAgents&amp; instrumentingAgents, Frame&amp; frame)
</ins><span class="cx"> {
</span><del>-    if (InspectorApplicationCacheAgent* applicationCacheAgent = instrumentingAgents.inspectorApplicationCacheAgent())
-        applicationCacheAgent-&gt;updateApplicationCacheStatus(frame);
</del><ins>+    if (auto* applicationCacheAgent = instrumentingAgents.inspectorApplicationCacheAgent())
+        applicationCacheAgent-&gt;updateApplicationCacheStatus(&amp;frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InspectorInstrumentation::consoleAgentEnabled(ScriptExecutionContext* scriptExecutionContext)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorInstrumentationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorInstrumentation.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -407,7 +407,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     static void networkStateChangedImpl(InstrumentingAgents&amp;);
</span><del>-    static void updateApplicationCacheStatusImpl(InstrumentingAgents&amp;, Frame*);
</del><ins>+    static void updateApplicationCacheStatusImpl(InstrumentingAgents&amp;, Frame&amp;);
</ins><span class="cx"> 
</span><span class="cx">     static void layerTreeDidChangeImpl(InstrumentingAgents&amp;);
</span><span class="cx">     static void renderLayerDestroyedImpl(InstrumentingAgents&amp;, const RenderLayer&amp;);
</span><span class="lines">@@ -1181,8 +1181,8 @@
</span><span class="cx"> inline void InspectorInstrumentation::updateApplicationCacheStatus(Frame* frame)
</span><span class="cx"> {
</span><span class="cx">     FAST_RETURN_IF_NO_FRONTENDS(void());
</span><del>-    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(frame))
-        updateApplicationCacheStatusImpl(*instrumentingAgents, frame);
</del><ins>+    if (auto* instrumentingAgents = instrumentingAgentsForFrame(frame))
+        updateApplicationCacheStatusImpl(*instrumentingAgents, *frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline void InspectorInstrumentation::addMessageToConsole(Page&amp; page, std::unique_ptr&lt;Inspector::ConsoleMessage&gt; message)
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderDocumentLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/DocumentLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -129,30 +129,16 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DocumentLoader::DocumentLoader(const ResourceRequest&amp; req, const SubstituteData&amp; substituteData)
-    : m_deferMainResourceDataLoad(true)
-    , m_frame(nullptr)
-    , m_cachedResourceLoader(CachedResourceLoader::create(this))
</del><ins>+DocumentLoader::DocumentLoader(const ResourceRequest&amp; request, const SubstituteData&amp; substituteData)
+    : m_cachedResourceLoader(CachedResourceLoader::create(this))
</ins><span class="cx">     , m_writer(m_frame)
</span><del>-    , m_originalRequest(req)
</del><ins>+    , m_originalRequest(request)
</ins><span class="cx">     , m_substituteData(substituteData)
</span><del>-    , m_originalRequestCopy(req)
-    , m_request(req)
</del><ins>+    , m_originalRequestCopy(request)
+    , m_request(request)
</ins><span class="cx">     , m_originalSubstituteDataWasValid(substituteData.isValid())
</span><del>-    , m_committed(false)
-    , m_isStopping(false)
-    , m_gotFirstByte(false)
-    , m_isClientRedirect(false)
-    , m_isLoadingMultipartContent(false)
-    , m_wasOnloadDispatched(false)
-    , m_stopRecordingResponses(false)
</del><span class="cx">     , m_substituteResourceDeliveryTimer(*this, &amp;DocumentLoader::substituteResourceDeliveryTimerFired)
</span><del>-    , m_didCreateGlobalHistoryEntry(false)
-    , m_loadingMainResource(false)
-    , m_timeOfLastDataReceived(0.0)
-    , m_identifierForLoadWithoutResourceLoader(0)
</del><span class="cx">     , m_dataLoadTimer(*this, &amp;DocumentLoader::handleSubstituteDataLoadNow)
</span><del>-    , m_subresourceLoadersArePageCacheAcceptable(false)
</del><span class="cx">     , m_applicationCacheHost(std::make_unique&lt;ApplicationCacheHost&gt;(*this))
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -166,7 +152,9 @@
</span><span class="cx"> 
</span><span class="cx"> SubresourceLoader* DocumentLoader::mainResourceLoader() const
</span><span class="cx"> {
</span><del>-    return m_mainResource ? m_mainResource-&gt;loader() : 0;
</del><ins>+    if (!m_mainResource)
+        return nullptr;
+    return m_mainResource-&gt;loader();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DocumentLoader::~DocumentLoader()
</span><span class="lines">@@ -179,7 +167,7 @@
</span><span class="cx">     if (m_iconDataCallback)
</span><span class="cx">         m_iconDataCallback-&gt;invalidate();
</span><span class="cx">     m_cachedResourceLoader-&gt;clearDocumentLoader();
</span><del>-    
</del><ins>+
</ins><span class="cx">     clearMainResource();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -199,31 +187,6 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const ResourceRequest&amp; DocumentLoader::originalRequest() const
-{
-    return m_originalRequest;
-}
-
-const ResourceRequest&amp; DocumentLoader::originalRequestCopy() const
-{
-    return m_originalRequestCopy;
-}
-
-const ResourceRequest&amp; DocumentLoader::request() const
-{
-    return m_request;
-}
-
-ResourceRequest&amp; DocumentLoader::request()
-{
-    return m_request;
-}
-
-const URL&amp; DocumentLoader::url() const
-{
-    return request().url();
-}
-
</del><span class="cx"> void DocumentLoader::replaceRequestURLForSameDocumentNavigation(const URL&amp; url)
</span><span class="cx"> {
</span><span class="cx">     m_originalRequestCopy.setURL(url);
</span><span class="lines">@@ -319,7 +282,7 @@
</span><span class="cx">     cancelAll(m_multipartSubresourceLoaders);
</span><span class="cx"> 
</span><span class="cx">     // Appcache uses ResourceHandle directly, DocumentLoader doesn't count these loads.
</span><del>-    m_applicationCacheHost-&gt;stopLoadingInFrame(m_frame);
</del><ins>+    m_applicationCacheHost-&gt;stopLoadingInFrame(*m_frame);
</ins><span class="cx">     
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
</span><span class="cx">     clearArchiveResources();
</span><span class="lines">@@ -602,7 +565,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_waitingForNavigationPolicy);
</span><span class="cx">     m_waitingForNavigationPolicy = true;
</span><del>-    frameLoader()-&gt;policyChecker().checkNavigationPolicy(newRequest, didReceiveRedirectResponse, [this](const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt;, bool shouldContinue) {
</del><ins>+    frameLoader()-&gt;policyChecker().checkNavigationPolicy(newRequest, didReceiveRedirectResponse, [this] (const ResourceRequest&amp; request, FormState*, bool shouldContinue) {
</ins><span class="cx">         continueAfterNavigationPolicy(request, shouldContinue);
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -900,12 +863,8 @@
</span><span class="cx">         if (frameLoader()-&gt;stateMachine().creatingInitialEmptyDocument())
</span><span class="cx">             return;
</span><span class="cx">         
</span><del>-#if ENABLE(MHTML)
-        // The origin is the MHTML file, we need to set the base URL to the document encoded in the MHTML so
-        // relative URLs are resolved properly.
-        if (m_archive &amp;&amp; m_archive-&gt;type() == Archive::MHTML)
</del><ins>+        if (m_archive &amp;&amp; m_archive-&gt;shouldOverrideBaseURL())
</ins><span class="cx">             m_frame-&gt;document()-&gt;setBaseURLOverride(m_archive-&gt;mainResource()-&gt;url());
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">         // Call receivedFirstData() exactly once per load. We should only reach this point multiple times
</span><span class="cx">         // for multipart loads, and FrameLoader::isReplacing() will be true after the first time.
</span><span class="lines">@@ -921,10 +880,8 @@
</span><span class="cx">         if (overrideEncoding().isNull()) {
</span><span class="cx">             userChosen = false;
</span><span class="cx">             encoding = response().textEncodingName();
</span><del>-#if ENABLE(WEB_ARCHIVE)
-            if (m_archive &amp;&amp; m_archive-&gt;type() == Archive::WebArchive)
</del><ins>+            if (m_archive &amp;&amp; m_archive-&gt;shouldUseMainResourceEncoding())
</ins><span class="cx">                 encoding = m_archive-&gt;mainResource()-&gt;textEncoding();
</span><del>-#endif
</del><span class="cx">         } else {
</span><span class="cx">             userChosen = true;
</span><span class="cx">             encoding = overrideEncoding();
</span><span class="lines">@@ -1083,15 +1040,16 @@
</span><span class="cx">     if (frameLoader()-&gt;state() != FrameStateComplete) {
</span><span class="cx">         if (m_frame-&gt;settings().needsIsLoadingInAPISenseQuirk() &amp;&amp; !m_subresourceLoaders.isEmpty())
</span><span class="cx">             return true;
</span><del>-    
-        Document* doc = m_frame-&gt;document();
-        if ((isLoadingMainResource() || !m_frame-&gt;document()-&gt;loadEventFinished()) &amp;&amp; isLoading())
</del><ins>+
+        ASSERT(m_frame-&gt;document());
+        auto&amp; document = *m_frame-&gt;document();
+        if ((isLoadingMainResource() || !document.loadEventFinished()) &amp;&amp; isLoading())
</ins><span class="cx">             return true;
</span><span class="cx">         if (m_cachedResourceLoader-&gt;requestCount())
</span><span class="cx">             return true;
</span><del>-        if (doc-&gt;processingLoadEvent())
</del><ins>+        if (document.processingLoadEvent())
</ins><span class="cx">             return true;
</span><del>-        if (doc-&gt;hasActiveParser())
</del><ins>+        if (document.hasActiveParser())
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx">     return frameLoader()-&gt;subframeIsLoading();
</span><span class="lines">@@ -1102,40 +1060,35 @@
</span><span class="cx"> #if !ENABLE(WEB_ARCHIVE) &amp;&amp; !ENABLE(MHTML)
</span><span class="cx">     return false;
</span><span class="cx"> #else
</span><del>-    
</del><span class="cx">     // Give the archive machinery a crack at this document. If the MIME type is not an archive type, it will return 0.
</span><span class="cx">     m_archive = ArchiveFactory::create(m_response.url(), mainResourceData().get(), m_response.mimeType());
</span><span class="cx">     if (!m_archive)
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    addAllArchiveResources(m_archive.get());
-    ArchiveResource* mainResource = m_archive-&gt;mainResource();
-    m_parsedArchiveData = &amp;mainResource-&gt;data();
-    m_writer.setMIMEType(mainResource-&gt;mimeType());
-    
</del><ins>+    addAllArchiveResources(*m_archive);
+    ASSERT(m_archive-&gt;mainResource());
+    auto&amp; mainResource = *m_archive-&gt;mainResource();
+    m_parsedArchiveData = &amp;mainResource.data();
+    m_writer.setMIMEType(mainResource.mimeType());
+
</ins><span class="cx">     ASSERT(m_frame-&gt;document());
</span><del>-    commitData(mainResource-&gt;data().data(), mainResource-&gt;data().size());
</del><ins>+    commitData(mainResource.data().data(), mainResource.data().size());
</ins><span class="cx">     return true;
</span><del>-#endif // !ENABLE(WEB_ARCHIVE) &amp;&amp; !ENABLE(MHTML)
</del><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
</span><span class="cx"> 
</span><del>-void DocumentLoader::setArchive(PassRefPtr&lt;Archive&gt; archive)
</del><ins>+void DocumentLoader::setArchive(Ref&lt;Archive&gt;&amp;&amp; archive)
</ins><span class="cx"> {
</span><del>-    m_archive = archive;
-    addAllArchiveResources(m_archive.get());
</del><ins>+    m_archive = WTFMove(archive);
+    addAllArchiveResources(*m_archive);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DocumentLoader::addAllArchiveResources(Archive* archive)
</del><ins>+void DocumentLoader::addAllArchiveResources(Archive&amp; archive)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_archiveResourceCollection)
</span><span class="cx">         m_archiveResourceCollection = std::make_unique&lt;ArchiveResourceCollection&gt;();
</span><del>-        
-    ASSERT(archive);
-    if (!archive)
-        return;
-        
</del><span class="cx">     m_archiveResourceCollection-&gt;addAllResources(archive);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1145,13 +1098,12 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_archiveResourceCollection)
</span><span class="cx">         m_archiveResourceCollection = std::make_unique&lt;ArchiveResourceCollection&gt;();
</span><del>-        
</del><span class="cx">     m_archiveResourceCollection-&gt;addResource(WTFMove(resource));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Archive&gt; DocumentLoader::popArchiveForSubframe(const String&amp; frameName, const URL&amp; url)
</del><ins>+RefPtr&lt;Archive&gt; DocumentLoader::popArchiveForSubframe(const String&amp; frameName, const URL&amp; url)
</ins><span class="cx"> {
</span><del>-    return m_archiveResourceCollection ? m_archiveResourceCollection-&gt;popSubframeArchive(frameName, url) : PassRefPtr&lt;Archive&gt;(nullptr);
</del><ins>+    return m_archiveResourceCollection ? m_archiveResourceCollection-&gt;popSubframeArchive(frameName, url) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::clearArchiveResources()
</span><span class="lines">@@ -1171,7 +1123,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_archiveResourceCollection)
</span><span class="cx">         return nullptr;
</span><del>-    ArchiveResource* resource = m_archiveResourceCollection-&gt;archiveResourceForURL(url);
</del><ins>+    auto* resource = m_archiveResourceCollection-&gt;archiveResourceForURL(url);
</ins><span class="cx">     if (!resource || resource-&gt;shouldIgnoreWhenUnarchiving())
</span><span class="cx">         return nullptr;
</span><span class="cx">     return resource;
</span><span class="lines">@@ -1182,17 +1134,16 @@
</span><span class="cx">     RefPtr&lt;SharedBuffer&gt; data = mainResourceData();
</span><span class="cx">     if (!data)
</span><span class="cx">         data = SharedBuffer::create();
</span><del>-        
</del><span class="cx">     auto&amp; response = this-&gt;response();
</span><span class="cx">     return ArchiveResource::create(WTFMove(data), response.url(), response.mimeType(), response.textEncodingName(), frame()-&gt;tree().uniqueName());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;ArchiveResource&gt; DocumentLoader::subresource(const URL&amp; url) const
</del><ins>+RefPtr&lt;ArchiveResource&gt; DocumentLoader::subresource(const URL&amp; url) const
</ins><span class="cx"> {
</span><span class="cx">     if (!isCommitted())
</span><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    CachedResource* resource = m_cachedResourceLoader-&gt;cachedResource(url);
</del><ins>+    auto* resource = m_cachedResourceLoader-&gt;cachedResource(url);
</ins><span class="cx">     if (!resource || !resource-&gt;isLoaded())
</span><span class="cx">         return archiveResourceForURL(url);
</span><span class="cx"> 
</span><span class="lines">@@ -1206,18 +1157,16 @@
</span><span class="cx">     return ArchiveResource::create(data, url, resource-&gt;response());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; DocumentLoader::subresources() const
</del><ins>+Vector&lt;Ref&lt;ArchiveResource&gt;&gt; DocumentLoader::subresources() const
</ins><span class="cx"> {
</span><span class="cx">     if (!isCommitted())
</span><span class="cx">         return { };
</span><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; subresources;
-
-    for (auto&amp; cachedResourceHandle : m_cachedResourceLoader-&gt;allCachedResources().values()) {
-        if (RefPtr&lt;ArchiveResource&gt; subresource = this-&gt;subresource(URL(ParsedURLString, cachedResourceHandle-&gt;url())))
-            subresources.append(WTFMove(subresource));
</del><ins>+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; subresources;
+    for (auto&amp; handle : m_cachedResourceLoader-&gt;allCachedResources().values()) {
+        if (auto subresource = this-&gt;subresource({ ParsedURLString, handle-&gt;url() }))
+            subresources.append(subresource.releaseNonNull());
</ins><span class="cx">     }
</span><del>-
</del><span class="cx">     return subresources;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1225,9 +1174,11 @@
</span><span class="cx"> {
</span><span class="cx">     if (m_pendingSubstituteResources.isEmpty())
</span><span class="cx">         return;
</span><del>-    ASSERT(m_frame &amp;&amp; m_frame-&gt;page());
</del><ins>+    ASSERT(m_frame);
+    ASSERT(m_frame-&gt;page());
</ins><span class="cx">     if (m_frame-&gt;page()-&gt;defersLoading())
</span><span class="cx">         return;
</span><ins>+
</ins><span class="cx">     if (!m_substituteResourceDeliveryTimer.isActive())
</span><span class="cx">         m_substituteResourceDeliveryTimer.startOneShot(0);
</span><span class="cx"> }
</span><span class="lines">@@ -1236,18 +1187,15 @@
</span><span class="cx"> {
</span><span class="cx">     if (m_pendingSubstituteResources.isEmpty())
</span><span class="cx">         return;
</span><del>-    ASSERT(m_frame &amp;&amp; m_frame-&gt;page());
</del><ins>+    ASSERT(m_frame);
+    ASSERT(m_frame-&gt;page());
</ins><span class="cx">     if (m_frame-&gt;page()-&gt;defersLoading())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    SubstituteResourceMap copy;
-    copy.swap(m_pendingSubstituteResources);
-
-    for (auto&amp; entry : copy) {
-        auto&amp; loader = entry.key;
-        SubstituteResource* resource = entry.value.get();
-
-        if (resource)
</del><ins>+    auto pendingSubstituteResources = WTFMove(m_pendingSubstituteResources);
+    for (auto&amp; pendingSubstituteResource : pendingSubstituteResources) {
+        auto&amp; loader = pendingSubstituteResource.key;
+        if (auto&amp; resource = pendingSubstituteResource.value)
</ins><span class="cx">             resource-&gt;deliver(*loader);
</span><span class="cx">         else {
</span><span class="cx">             // A null resource means that we should fail the load.
</span><span class="lines">@@ -1258,10 +1206,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><ins>+
</ins><span class="cx"> bool DocumentLoader::isSubstituteLoadPending(ResourceLoader* loader) const
</span><span class="cx"> {
</span><span class="cx">     return m_pendingSubstituteResources.contains(loader);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::cancelPendingSubstituteLoad(ResourceLoader* loader)
</span><span class="lines">@@ -1274,9 +1224,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
</span><ins>+
</ins><span class="cx"> bool DocumentLoader::scheduleArchiveLoad(ResourceLoader&amp; loader, const ResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    if (ArchiveResource* resource = archiveResourceForURL(request.url())) {
</del><ins>+    if (auto* resource = archiveResourceForURL(request.url())) {
</ins><span class="cx">         scheduleSubstituteResourceLoad(loader, *resource);
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -1284,22 +1235,20 @@
</span><span class="cx">     if (!m_archive)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    switch (m_archive-&gt;type()) {
</del><span class="cx"> #if ENABLE(WEB_ARCHIVE)
</span><del>-    case Archive::WebArchive:
-        // WebArchiveDebugMode means we fail loads instead of trying to fetch them from the network if they're not in the archive.
-        return m_frame-&gt;settings().webArchiveDebugModeEnabled() &amp;&amp; ArchiveFactory::isArchiveMimeType(responseMIMEType());
</del><ins>+    // The idea of WebArchiveDebugMode is that we should fail instead of trying to fetch from the network.
+    // Returning true ensures the caller will not try to fetch from the network.
+    if (m_frame-&gt;settings().webArchiveDebugModeEnabled() &amp;&amp; responseMIMEType() == &quot;application/x-webarchive&quot;)
+        return true;
</ins><span class="cx"> #endif
</span><del>-#if ENABLE(MHTML)
-    case Archive::MHTML:
-        return true; // Always fail the load for resources not included in the MHTML.
-#endif
-    default:
-        return false;
-    }
</del><ins>+
+    // If we want to load from the archive only, then we should always return true so that the caller
+    // does not try to fetch form the network.
+    return m_archive-&gt;shouldLoadFromArchiveOnly();
</ins><span class="cx"> }
</span><del>-#endif // ENABLE(WEB_ARCHIVE)
</del><span class="cx"> 
</span><ins>+#endif
+
</ins><span class="cx"> void DocumentLoader::scheduleSubstituteResourceLoad(ResourceLoader&amp; loader, SubstituteResource&amp; resource)
</span><span class="cx"> {
</span><span class="cx">     m_pendingSubstituteResources.set(&amp;loader, &amp;resource);
</span><span class="lines">@@ -1306,10 +1255,10 @@
</span><span class="cx">     deliverSubstituteResourcesAfterDelay();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DocumentLoader::addResponse(const ResourceResponse&amp; r)
</del><ins>+void DocumentLoader::addResponse(const ResourceResponse&amp; response)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_stopRecordingResponses)
</span><del>-        m_responses.append(r);
</del><ins>+        m_responses.append(response);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::stopRecordingResponses()
</span><span class="lines">@@ -1344,21 +1293,11 @@
</span><span class="cx">     return m_substituteData.isValid() || m_response.httpStatusCode() &gt;= 400;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const URL&amp; DocumentLoader::originalURL() const
-{
-    return m_originalRequestCopy.url();
-}
-
-const URL&amp; DocumentLoader::responseURL() const
-{
-    return m_response.url();
-}
-
</del><span class="cx"> URL DocumentLoader::documentURL() const
</span><span class="cx"> {
</span><span class="cx">     URL url = substituteData().response().url();
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE)
</span><del>-    if (url.isEmpty() &amp;&amp; m_archive &amp;&amp; m_archive-&gt;type() == Archive::WebArchive)
</del><ins>+    if (url.isEmpty() &amp;&amp; m_archive &amp;&amp; m_archive-&gt;shouldUseMainResourceURL())
</ins><span class="cx">         url = m_archive-&gt;mainResource()-&gt;url();
</span><span class="cx"> #endif
</span><span class="cx">     if (url.isEmpty())
</span><span class="lines">@@ -1368,29 +1307,16 @@
</span><span class="cx">     return url;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-const String&amp; DocumentLoader::responseMIMEType() const
-{
-    return m_response.mimeType();
-}
</del><ins>+#if PLATFORM(IOS)
</ins><span class="cx"> 
</span><del>-const String&amp; DocumentLoader::currentContentType() const
-{
-    return m_writer.mimeType();
-}
-
-#if PLATFORM(IOS)
</del><span class="cx"> // FIXME: This method seems to violate the encapsulation of this class.
</span><span class="cx"> void DocumentLoader::setResponseMIMEType(const String&amp; responseMimeType)
</span><span class="cx"> {
</span><span class="cx">     m_response.setMimeType(responseMimeType);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-const URL&amp; DocumentLoader::unreachableURL() const
-{
-    return m_substituteData.failingURL();
-}
-
</del><span class="cx"> void DocumentLoader::setDefersLoading(bool defers)
</span><span class="cx"> {
</span><span class="cx">     // Multiple frames may be loading the same main resource simultaneously. If deferral state changes,
</span><span class="lines">@@ -1682,7 +1608,7 @@
</span><span class="cx">     if (m_iconLoadDecisionCallback)
</span><span class="cx">         m_iconLoadDecisionCallback-&gt;invalidate();
</span><span class="cx">     m_iconLoadDecisionCallback = IconLoadDecisionCallback::create(this, iconLoadDecisionCallback);
</span><del>-    iconDatabase().loadDecisionForIconURL(urlString, m_iconLoadDecisionCallback);
</del><ins>+    iconDatabase().loadDecisionForIconURL(urlString, *m_iconLoadDecisionCallback);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::continueIconLoadWithDecision(IconLoadDecision decision)
</span><span class="lines">@@ -1703,7 +1629,7 @@
</span><span class="cx">     if (m_iconDataCallback)
</span><span class="cx">         m_iconDataCallback-&gt;invalidate();
</span><span class="cx">     m_iconDataCallback = IconDataCallback::create(this, iconDataCallback);
</span><del>-    iconDatabase().iconDataForIconURL(urlString, m_iconDataCallback);
</del><ins>+    iconDatabase().iconDataForIconURL(urlString, *m_iconDataCallback);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::startIconLoading()
</span><span class="lines">@@ -1749,7 +1675,7 @@
</span><span class="cx"> void DocumentLoader::dispatchOnloadEvents()
</span><span class="cx"> {
</span><span class="cx">     m_wasOnloadDispatched = true;
</span><del>-    applicationCacheHost()-&gt;stopDeferringEvents();
</del><ins>+    m_applicationCacheHost-&gt;stopDeferringEvents();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DocumentLoader::setTriggeringAction(const NavigationAction&amp; action)
</span><span class="lines">@@ -1789,23 +1715,18 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if ENABLE(CONTENT_FILTERING)
-ContentFilter* DocumentLoader::contentFilter() const
-{
-    return m_contentFilter.get();
-}
-#endif
-
</del><span class="cx"> bool DocumentLoader::isAlwaysOnLoggingAllowed() const
</span><span class="cx"> {
</span><del>-    return m_frame ? m_frame-&gt;isAlwaysOnLoggingAllowed() : true;
</del><ins>+    return !m_frame || m_frame-&gt;isAlwaysOnLoggingAllowed();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><ins>+
</ins><span class="cx"> void DocumentLoader::setQuickLookHandle(std::unique_ptr&lt;QuickLookHandle&gt; quickLookHandle)
</span><span class="cx"> {
</span><span class="cx">     m_quickLookHandle = WTFMove(quickLookHandle);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderDocumentLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/DocumentLoader.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/DocumentLoader.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/DocumentLoader.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2011 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -76,8 +76,7 @@
</span><span class="cx"> class SubresourceLoader;
</span><span class="cx"> class SubstituteResource;
</span><span class="cx"> 
</span><del>-typedef HashMap&lt;unsigned long, RefPtr&lt;ResourceLoader&gt;&gt; ResourceLoaderMap;
-typedef Vector&lt;ResourceResponse&gt; ResponseVector;
</del><ins>+using ResourceLoaderMap = HashMap&lt;unsigned long, RefPtr&lt;ResourceLoader&gt;&gt;;
</ins><span class="cx"> 
</span><span class="cx"> class DocumentLoader : public RefCounted&lt;DocumentLoader&gt;, private CachedRawResourceClient {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="lines">@@ -150,14 +149,15 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
</span><del>-    void setArchive(PassRefPtr&lt;Archive&gt;);
-    WEBCORE_EXPORT void addAllArchiveResources(Archive*);
</del><ins>+    void setArchive(Ref&lt;Archive&gt;&amp;&amp;);
+    WEBCORE_EXPORT void addAllArchiveResources(Archive&amp;);
</ins><span class="cx">     WEBCORE_EXPORT void addArchiveResource(Ref&lt;ArchiveResource&gt;&amp;&amp;);
</span><del>-    PassRefPtr&lt;Archive&gt; popArchiveForSubframe(const String&amp; frameName, const URL&amp;);
</del><ins>+    RefPtr&lt;Archive&gt; popArchiveForSubframe(const String&amp; frameName, const URL&amp;);
</ins><span class="cx">     WEBCORE_EXPORT SharedBuffer* parsedArchiveData() const;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT bool scheduleArchiveLoad(ResourceLoader&amp;, const ResourceRequest&amp;);
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx">     void scheduleSubstituteResourceLoad(ResourceLoader&amp;, SubstituteResource&amp;);
</span><span class="cx"> 
</span><span class="cx">     // Return the ArchiveResource for the URL only when loading an Archive
</span><span class="lines">@@ -166,10 +166,11 @@
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;ArchiveResource&gt; mainResource() const;
</span><span class="cx"> 
</span><span class="cx">     // Return an ArchiveResource for the URL, either creating from live data or
</span><del>-    // pulling from the ArchiveResourceCollection
-    WEBCORE_EXPORT PassRefPtr&lt;ArchiveResource&gt; subresource(const URL&amp;) const;
-    WEBCORE_EXPORT Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; subresources() const;
</del><ins>+    // pulling from the ArchiveResourceCollection.
+    WEBCORE_EXPORT RefPtr&lt;ArchiveResource&gt; subresource(const URL&amp;) const;
</ins><span class="cx"> 
</span><ins>+    WEBCORE_EXPORT Vector&lt;Ref&lt;ArchiveResource&gt;&gt; subresources() const;
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     bool isSubstituteLoadPending(ResourceLoader*) const;
</span><span class="cx"> #endif
</span><span class="lines">@@ -176,7 +177,7 @@
</span><span class="cx">     void cancelPendingSubstituteLoad(ResourceLoader*);   
</span><span class="cx">     
</span><span class="cx">     void addResponse(const ResourceResponse&amp;);
</span><del>-    const ResponseVector&amp; responses() const { return m_responses; }
</del><ins>+    const Vector&lt;ResourceResponse&gt;&amp; responses() const { return m_responses; }
</ins><span class="cx"> 
</span><span class="cx">     const NavigationAction&amp; triggeringAction() const { return m_triggeringAction; }
</span><span class="cx">     void setTriggeringAction(const NavigationAction&amp;);
</span><span class="lines">@@ -240,17 +241,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setDeferMainResourceDataLoad(bool defer) { m_deferMainResourceDataLoad = defer; }
</span><span class="cx">     
</span><del>-    void didTellClientAboutLoad(const String&amp; url)
-    { 
-#if !PLATFORM(COCOA)
-        // Don't include data urls here, as if a lot of data is loaded
-        // that way, we hold on to the (large) url string for too long.
-        if (protocolIs(url, &quot;data&quot;))
-            return;
-#endif
-        if (!url.isEmpty())
-            m_resourcesClientKnowsAbout.add(url);
-    }
</del><ins>+    void didTellClientAboutLoad(const String&amp; url);
</ins><span class="cx">     bool haveToldClientAboutLoad(const String&amp; url) { return m_resourcesClientKnowsAbout.contains(url); }
</span><span class="cx">     void recordMemoryCacheLoadForFutureClientNotification(const ResourceRequest&amp;);
</span><span class="cx">     void takeMemoryCacheLoadsForClientNotification(Vector&lt;ResourceRequest&gt;&amp; loads);
</span><span class="lines">@@ -258,11 +249,11 @@
</span><span class="cx">     LoadTiming&amp; timing() { return m_loadTiming; }
</span><span class="cx">     void resetTiming() { m_loadTiming = LoadTiming(); }
</span><span class="cx"> 
</span><del>-    // The WebKit layer calls this function when it's ready for the data to
-    // actually be added to the document.
</del><ins>+    // The WebKit layer calls this function when it's ready for the data to actually be added to the document.
</ins><span class="cx">     WEBCORE_EXPORT void commitData(const char* bytes, size_t length);
</span><span class="cx"> 
</span><del>-    ApplicationCacheHost* applicationCacheHost() const { return m_applicationCacheHost.get(); }
</del><ins>+    ApplicationCacheHost&amp; applicationCacheHost() const;
+    ApplicationCacheHost* applicationCacheHostUnlessBeingDestroyed() const;
</ins><span class="cx"> 
</span><span class="cx">     void checkLoadComplete();
</span><span class="cx"> 
</span><span class="lines">@@ -297,7 +288,7 @@
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT virtual void attachToFrame();
</span><span class="cx"> 
</span><del>-    bool m_deferMainResourceDataLoad;
</del><ins>+    bool m_deferMainResourceDataLoad { true };
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     Document* document() const;
</span><span class="lines">@@ -358,7 +349,7 @@
</span><span class="cx">     void cancelPolicyCheckIfNeeded();
</span><span class="cx">     void becomeMainResourceClient();
</span><span class="cx"> 
</span><del>-    Frame* m_frame;
</del><ins>+    Frame* m_frame { nullptr };
</ins><span class="cx">     Ref&lt;CachedResourceLoader&gt; m_cachedResourceLoader;
</span><span class="cx"> 
</span><span class="cx">     CachedResourceHandle&lt;CachedRawResource&gt; m_mainResource;
</span><span class="lines">@@ -390,15 +381,15 @@
</span><span class="cx">     ResourceError m_mainDocumentError;    
</span><span class="cx"> 
</span><span class="cx">     bool m_originalSubstituteDataWasValid;
</span><del>-    bool m_committed;
-    bool m_isStopping;
-    bool m_gotFirstByte;
-    bool m_isClientRedirect;
-    bool m_isLoadingMultipartContent;
</del><ins>+    bool m_committed { false };
+    bool m_isStopping { false };
+    bool m_gotFirstByte { false };
+    bool m_isClientRedirect { false };
+    bool m_isLoadingMultipartContent { false };
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Document::m_processingLoadEvent and DocumentLoader::m_wasOnloadDispatched are roughly the same
</span><span class="cx">     // and should be merged.
</span><del>-    bool m_wasOnloadDispatched;
</del><ins>+    bool m_wasOnloadDispatched { false };
</ins><span class="cx"> 
</span><span class="cx">     StringWithDirection m_pageTitle;
</span><span class="cx"> 
</span><span class="lines">@@ -415,8 +406,8 @@
</span><span class="cx">     // We retain all the received responses so we can play back the
</span><span class="cx">     // WebResourceLoadDelegate messages if the item is loaded from the
</span><span class="cx">     // page cache.
</span><del>-    ResponseVector m_responses;
-    bool m_stopRecordingResponses;
</del><ins>+    Vector&lt;ResourceResponse&gt; m_responses;
+    bool m_stopRecordingResponses { false };
</ins><span class="cx">     
</span><span class="cx">     typedef HashMap&lt;RefPtr&lt;ResourceLoader&gt;, RefPtr&lt;SubstituteResource&gt;&gt; SubstituteResourceMap;
</span><span class="cx">     SubstituteResourceMap m_pendingSubstituteResources;
</span><span class="lines">@@ -432,13 +423,13 @@
</span><span class="cx">     Vector&lt;ResourceRequest&gt; m_resourcesLoadedFromMemoryCacheForClientNotification;
</span><span class="cx">     
</span><span class="cx">     String m_clientRedirectSourceForHistory;
</span><del>-    bool m_didCreateGlobalHistoryEntry;
</del><ins>+    bool m_didCreateGlobalHistoryEntry { false };
</ins><span class="cx"> 
</span><del>-    bool m_loadingMainResource;
</del><ins>+    bool m_loadingMainResource { false };
</ins><span class="cx">     LoadTiming m_loadTiming;
</span><span class="cx"> 
</span><del>-    double m_timeOfLastDataReceived;
-    unsigned long m_identifierForLoadWithoutResourceLoader;
</del><ins>+    double m_timeOfLastDataReceived { 0 };
+    unsigned long m_identifierForLoadWithoutResourceLoader { 0 };
</ins><span class="cx"> 
</span><span class="cx">     DocumentLoaderTimer m_dataLoadTimer;
</span><span class="cx">     bool m_waitingForContentPolicy { false };
</span><span class="lines">@@ -452,7 +443,7 @@
</span><span class="cx">     HashMap&lt;uint64_t, LinkIcon&gt; m_iconsPendingLoadDecision;
</span><span class="cx">     HashMap&lt;std::unique_ptr&lt;IconLoader&gt;, uint64_t&gt; m_iconLoaders;
</span><span class="cx"> 
</span><del>-    bool m_subresourceLoadersArePageCacheAcceptable;
</del><ins>+    bool m_subresourceLoadersArePageCacheAcceptable { false };
</ins><span class="cx">     ShouldOpenExternalURLsPolicy m_shouldOpenExternalURLsPolicy { ShouldOpenExternalURLsPolicy::ShouldNotAllow };
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;ApplicationCacheHost&gt; m_applicationCacheHost;
</span><span class="lines">@@ -487,4 +478,87 @@
</span><span class="cx">     m_resourcesLoadedFromMemoryCacheForClientNotification.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline const ResourceRequest&amp; DocumentLoader::originalRequest() const
+{
+    return m_originalRequest;
</ins><span class="cx"> }
</span><ins>+
+inline const ResourceRequest&amp; DocumentLoader::originalRequestCopy() const
+{
+    return m_originalRequestCopy;
+}
+
+inline const ResourceRequest&amp; DocumentLoader::request() const
+{
+    return m_request;
+}
+
+inline ResourceRequest&amp; DocumentLoader::request()
+{
+    return m_request;
+}
+
+inline const URL&amp; DocumentLoader::url() const
+{
+    return m_request.url();
+}
+
+inline const URL&amp; DocumentLoader::originalURL() const
+{
+    return m_originalRequestCopy.url();
+}
+
+inline const URL&amp; DocumentLoader::responseURL() const
+{
+    return m_response.url();
+}
+
+inline const String&amp; DocumentLoader::responseMIMEType() const
+{
+    return m_response.mimeType();
+}
+
+inline const String&amp; DocumentLoader::currentContentType() const
+{
+    return m_writer.mimeType();
+}
+
+inline const URL&amp; DocumentLoader::unreachableURL() const
+{
+    return m_substituteData.failingURL();
+}
+
+inline ApplicationCacheHost&amp; DocumentLoader::applicationCacheHost() const
+{
+    // For a short time while the document loader is being destroyed, m_applicationCacheHost is null.
+    // It's not acceptable to call this function during that time.
+    ASSERT(m_applicationCacheHost);
+    return *m_applicationCacheHost;
+}
+
+inline ApplicationCacheHost* DocumentLoader::applicationCacheHostUnlessBeingDestroyed() const
+{
+    return m_applicationCacheHost.get();
+}
+
+#if ENABLE(CONTENT_FILTERING)
+
+inline ContentFilter* DocumentLoader::contentFilter() const
+{
+    return m_contentFilter.get();
+}
+
+#endif
+
+inline void DocumentLoader::didTellClientAboutLoad(const String&amp; url)
+{
+#if !PLATFORM(COCOA)
+    // Don't include data URLs here, as if a lot of data is loaded that way, we hold on to the (large) URL string for too long.
+    if (protocolIs(url, &quot;data&quot;))
+        return;
+#endif
+    if (!url.isEmpty())
+        m_resourcesClientKnowsAbout.add(url);
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> #include &quot;HTMLFormElement.h&quot;
</span><span class="cx"> #include &quot;InProcessIDBServer.h&quot;
</span><span class="cx"> #include &quot;InspectorClient.h&quot;
</span><ins>+#include &quot;NetworkStorageSession.h&quot;
</ins><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PageConfiguration.h&quot;
</span><span class="cx"> #include &quot;PaymentCoordinatorClient.h&quot;
</span><span class="lines">@@ -171,8 +172,8 @@
</span><span class="cx">     void requestCandidatesForSelection(const VisibleSelection&amp;) final { }
</span><span class="cx">     void handleAcceptedCandidateWithSoftSpaces(TextCheckingResult) final { }
</span><span class="cx"> 
</span><del>-    void registerUndoStep(PassRefPtr&lt;UndoStep&gt;) final;
-    void registerRedoStep(PassRefPtr&lt;UndoStep&gt;) final;
</del><ins>+    void registerUndoStep(UndoStep&amp;) final;
+    void registerRedoStep(UndoStep&amp;) final;
</ins><span class="cx">     void clearUndoRedoOperations() final { }
</span><span class="cx"> 
</span><span class="cx">     bool canCopyCut(Frame*, bool defaultValue) const final { return defaultValue; }
</span><span class="lines">@@ -331,14 +332,14 @@
</span><span class="cx">     void dispatchShow() final { }
</span><span class="cx"> 
</span><span class="cx">     void dispatchDecidePolicyForResponse(const ResourceResponse&amp;, const ResourceRequest&amp;, FramePolicyFunction) final { }
</span><del>-    void dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, const String&amp;, FramePolicyFunction) final;
-    void dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, FramePolicyFunction) final;
</del><ins>+    void dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, const String&amp;, FramePolicyFunction) final;
+    void dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, FramePolicyFunction) final;
</ins><span class="cx">     void cancelPolicyCheck() final { }
</span><span class="cx"> 
</span><span class="cx">     void dispatchUnableToImplementPolicy(const ResourceError&amp;) final { }
</span><span class="cx"> 
</span><del>-    void dispatchWillSendSubmitEvent(PassRefPtr&lt;FormState&gt;) final;
-    void dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt;, FramePolicyFunction) final;
</del><ins>+    void dispatchWillSendSubmitEvent(Ref&lt;FormState&gt;&amp;&amp;) final;
+    void dispatchWillSubmitForm(FormState&amp;, FramePolicyFunction) final;
</ins><span class="cx"> 
</span><span class="cx">     void revertToProvisionalState(DocumentLoader*) final { }
</span><span class="cx">     void setMainDocumentError(DocumentLoader*, const ResourceError&amp;) final { }
</span><span class="lines">@@ -410,10 +411,10 @@
</span><span class="cx">     void didDisplayInsecureContent() final { }
</span><span class="cx">     void didRunInsecureContent(SecurityOrigin*, const URL&amp;) final { }
</span><span class="cx">     void didDetectXSS(const URL&amp;, bool) final { }
</span><del>-    RefPtr&lt;Frame&gt; createFrame(const URL&amp;, const String&amp;, HTMLFrameOwnerElement*, const String&amp;, bool, int, int) final;
-    RefPtr&lt;Widget&gt; createPlugin(const IntSize&amp;, HTMLPlugInElement*, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool) final;
</del><ins>+    RefPtr&lt;Frame&gt; createFrame(const URL&amp;, const String&amp;, HTMLFrameOwnerElement&amp;, const String&amp;, bool, int, int) final;
+    RefPtr&lt;Widget&gt; createPlugin(const IntSize&amp;, HTMLPlugInElement&amp;, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool) final;
</ins><span class="cx">     void recreatePlugin(Widget*) final;
</span><del>-    PassRefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement*, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;) final;
</del><ins>+    RefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement&amp;, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     ObjectContentType objectContentType(const URL&amp;, const String&amp;) final { return ObjectContentType::None; }
</span><span class="cx">     String overrideMediaType() const final { return { }; }
</span><span class="lines">@@ -432,10 +433,10 @@
</span><span class="cx">     bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&amp;, const unsigned char*, unsigned long long) final { return true; }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;FrameNetworkingContext&gt; createNetworkingContext() final;
</del><ins>+    Ref&lt;FrameNetworkingContext&gt; createNetworkingContext() final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(REQUEST_AUTOCOMPLETE)
</span><del>-    void didRequestAutocomplete(PassRefPtr&lt;FormState&gt;) final { }
</del><ins>+    void didRequestAutocomplete(Ref&lt;FormState&gt;&amp;&amp;) final { }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool isEmptyFrameLoaderClient() final { return true; }
</span><span class="lines">@@ -442,6 +443,27 @@
</span><span class="cx">     void prefetchDNS(const String&amp;) final { }
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+class EmptyFrameNetworkingContext final : public FrameNetworkingContext {
+public:
+    static Ref&lt;EmptyFrameNetworkingContext&gt; create() { return adoptRef(*new EmptyFrameNetworkingContext); }
+
+private:
+    EmptyFrameNetworkingContext();
+
+    bool shouldClearReferrerOnHTTPSToHTTPRedirect() const { return true; }
+    NetworkStorageSession&amp; storageSession() const final { return NetworkStorageSession::defaultStorageSession(); }
+
+#if PLATFORM(COCOA)
+    bool localFileContentSniffingEnabled() const { return false; }
+    SchedulePairHashSet* scheduledRunLoopPairs() const { return nullptr; }
+    RetainPtr&lt;CFDataRef&gt; sourceApplicationAuditData() const { return nullptr; };
+#endif
+
+#if PLATFORM(COCOA) || PLATFORM(WIN)
+    ResourceError blockedError(const ResourceRequest&amp;) const final { return { }; }
+#endif
+};
+
</ins><span class="cx"> class EmptyInspectorClient final : public InspectorClient {
</span><span class="cx">     void inspectedPageDestroyed() final { }
</span><span class="cx">     Inspector::FrontendChannel* openLocalFrontend(InspectorController*) final { return nullptr; }
</span><span class="lines">@@ -569,23 +591,23 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void EmptyChromeClient::runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt;)
</del><ins>+void EmptyChromeClient::runOpenPanel(Frame&amp;, FileChooser&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, const String&amp;, FramePolicyFunction)
</del><ins>+void EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, const String&amp;, FramePolicyFunction)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, FramePolicyFunction)
</del><ins>+void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, FramePolicyFunction)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr&lt;FormState&gt;)
</del><ins>+void EmptyFrameLoaderClient::dispatchWillSendSubmitEvent(Ref&lt;FormState&gt;&amp;&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyFrameLoaderClient::dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt;, FramePolicyFunction)
</del><ins>+void EmptyFrameLoaderClient::dispatchWillSubmitForm(FormState&amp;, FramePolicyFunction)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -594,12 +616,12 @@
</span><span class="cx">     return DocumentLoader::create(request, substituteData);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Frame&gt; EmptyFrameLoaderClient::createFrame(const URL&amp;, const String&amp;, HTMLFrameOwnerElement*, const String&amp;, bool, int, int)
</del><ins>+RefPtr&lt;Frame&gt; EmptyFrameLoaderClient::createFrame(const URL&amp;, const String&amp;, HTMLFrameOwnerElement&amp;, const String&amp;, bool, int, int)
</ins><span class="cx"> {
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Widget&gt; EmptyFrameLoaderClient::createPlugin(const IntSize&amp;, HTMLPlugInElement*, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool)
</del><ins>+RefPtr&lt;Widget&gt; EmptyFrameLoaderClient::createPlugin(const IntSize&amp;, HTMLPlugInElement&amp;, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool)
</ins><span class="cx"> {
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="lines">@@ -608,25 +630,30 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Widget&gt; EmptyFrameLoaderClient::createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement*, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;)
</del><ins>+RefPtr&lt;Widget&gt; EmptyFrameLoaderClient::createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement&amp;, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;)
</ins><span class="cx"> {
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;FrameNetworkingContext&gt; EmptyFrameLoaderClient::createNetworkingContext()
</del><ins>+inline EmptyFrameNetworkingContext::EmptyFrameNetworkingContext()
+    : FrameNetworkingContext { nullptr }
</ins><span class="cx"> {
</span><del>-    return PassRefPtr&lt;FrameNetworkingContext&gt;();
</del><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Ref&lt;FrameNetworkingContext&gt; EmptyFrameLoaderClient::createNetworkingContext()
+{
+    return EmptyFrameNetworkingContext::create();
+}
+
</ins><span class="cx"> void EmptyEditorClient::EmptyTextCheckerClient::requestCheckingOfString(TextCheckingRequest&amp;, const VisibleSelection&amp;)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyEditorClient::registerUndoStep(PassRefPtr&lt;UndoStep&gt;)
</del><ins>+void EmptyEditorClient::registerUndoStep(UndoStep&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void EmptyEditorClient::registerRedoStep(PassRefPtr&lt;UndoStep&gt;)
</del><ins>+void EmptyEditorClient::registerRedoStep(UndoStep&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/EmptyClients.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx">     std::unique_ptr&lt;ColorChooser&gt; createColorChooser(ColorChooserClient*, const Color&amp;) final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt;) final;
</del><ins>+    void runOpenPanel(Frame&amp;, FileChooser&amp;) final;
</ins><span class="cx">     void loadIconForFiles(const Vector&lt;String&gt;&amp;, FileIconLoader&amp;) final { }
</span><span class="cx"> 
</span><span class="cx">     void elementDidFocus(const Node*) final { }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFormStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FormState.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FormState.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FormState.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,17 +34,17 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-inline FormState::FormState(PassRefPtr&lt;HTMLFormElement&gt; form, StringPairVector&amp; textFieldValuesToAdopt, PassRefPtr&lt;Document&gt; sourceDocument, FormSubmissionTrigger formSubmissionTrigger)
</del><ins>+inline FormState::FormState(HTMLFormElement&amp; form, StringPairVector&amp;&amp; textFieldValues, Document&amp; sourceDocument, FormSubmissionTrigger formSubmissionTrigger)
</ins><span class="cx">     : m_form(form)
</span><ins>+    , m_textFieldValues(WTFMove(textFieldValues))
</ins><span class="cx">     , m_sourceDocument(sourceDocument)
</span><span class="cx">     , m_formSubmissionTrigger(formSubmissionTrigger)
</span><span class="cx"> {
</span><del>-    m_textFieldValues.swap(textFieldValuesToAdopt);
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;FormState&gt; FormState::create(PassRefPtr&lt;HTMLFormElement&gt; form, StringPairVector&amp; textFieldValuesToAdopt, PassRefPtr&lt;Document&gt; sourceDocument, FormSubmissionTrigger formSubmissionTrigger)
</del><ins>+Ref&lt;FormState&gt; FormState::create(HTMLFormElement&amp; form, StringPairVector&amp;&amp; textFieldValues, Document&amp; sourceDocument, FormSubmissionTrigger formSubmissionTrigger)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new FormState(form, textFieldValuesToAdopt, sourceDocument, formSubmissionTrigger));
</del><ins>+    return adoptRef(*new FormState(form, WTFMove(textFieldValues), sourceDocument, formSubmissionTrigger));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFormStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FormState.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FormState.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FormState.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,37 +28,33 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    class Document;
-    class HTMLFormElement;
</del><ins>+class Document;
+class HTMLFormElement;
</ins><span class="cx"> 
</span><del>-    enum FormSubmissionTrigger {
-        SubmittedByJavaScript,
-        NotSubmittedByJavaScript
-    };
-    
-    typedef Vector&lt;std::pair&lt;String, String&gt;&gt; StringPairVector;
</del><ins>+enum FormSubmissionTrigger { SubmittedByJavaScript, NotSubmittedByJavaScript };
</ins><span class="cx"> 
</span><del>-    class FormState : public RefCounted&lt;FormState&gt; {
-    public:
-        static Ref&lt;FormState&gt; create(PassRefPtr&lt;HTMLFormElement&gt;, StringPairVector&amp; textFieldValuesToAdopt, PassRefPtr&lt;Document&gt;, FormSubmissionTrigger);
</del><ins>+using StringPairVector = Vector&lt;std::pair&lt;String, String&gt;&gt;;
</ins><span class="cx"> 
</span><del>-        HTMLFormElement* form() const { return m_form.get(); }
-        const StringPairVector&amp; textFieldValues() const { return m_textFieldValues; }
-        Document* sourceDocument() const { return m_sourceDocument.get(); }
-        FormSubmissionTrigger formSubmissionTrigger() const { return m_formSubmissionTrigger; }
</del><ins>+class FormState : public RefCounted&lt;FormState&gt; {
+public:
+    static Ref&lt;FormState&gt; create(HTMLFormElement&amp;, StringPairVector&amp;&amp; textFieldValues, Document&amp;, FormSubmissionTrigger);
</ins><span class="cx"> 
</span><del>-    private:
-        FormState(PassRefPtr&lt;HTMLFormElement&gt;, StringPairVector&amp; textFieldValuesToAdopt, PassRefPtr&lt;Document&gt;, FormSubmissionTrigger);
</del><ins>+    HTMLFormElement&amp; form() const { return m_form; }
+    const StringPairVector&amp; textFieldValues() const { return m_textFieldValues; }
+    Document&amp; sourceDocument() const { return m_sourceDocument; }
+    FormSubmissionTrigger formSubmissionTrigger() const { return m_formSubmissionTrigger; }
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;HTMLFormElement&gt; m_form;
-        StringPairVector m_textFieldValues;
-        RefPtr&lt;Document&gt; m_sourceDocument;
-        FormSubmissionTrigger m_formSubmissionTrigger;
-    };
</del><ins>+private:
+    FormState(HTMLFormElement&amp;, StringPairVector&amp;&amp; textFieldValues, Document&amp;, FormSubmissionTrigger);
</ins><span class="cx"> 
</span><ins>+    Ref&lt;HTMLFormElement&gt; m_form;
+    StringPairVector m_textFieldValues;
+    Ref&lt;Document&gt; m_sourceDocument;
+    FormSubmissionTrigger m_formSubmissionTrigger;
+};
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFormSubmissioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FormSubmission.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FormSubmission.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FormSubmission.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx"> 
</span><span class="cx"> FormSubmission::Method FormSubmission::Attributes::parseMethodType(const String&amp; type)
</span><span class="cx"> {
</span><del>-    return equalLettersIgnoringASCIICase(type, &quot;post&quot;) ? FormSubmission::PostMethod : FormSubmission::GetMethod;
</del><ins>+    return equalLettersIgnoringASCIICase(type, &quot;post&quot;) ? FormSubmission::Method::Post : FormSubmission::Method::Get;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FormSubmission::Attributes::updateMethodType(const String&amp; type)
</span><span class="lines">@@ -114,24 +114,13 @@
</span><span class="cx">     m_method = parseMethodType(type);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FormSubmission::Attributes::copyFrom(const Attributes&amp; other)
-{
-    m_method = other.m_method;
-    m_isMultiPartForm = other.m_isMultiPartForm;
-
-    m_action = other.m_action;
-    m_target = other.m_target;
-    m_encodingType = other.m_encodingType;
-    m_acceptCharset = other.m_acceptCharset;
-}
-
-inline FormSubmission::FormSubmission(Method method, const URL&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt; state, PassRefPtr&lt;FormData&gt; data, const String&amp; boundary, LockHistory lockHistory, PassRefPtr&lt;Event&gt; event)
</del><ins>+inline FormSubmission::FormSubmission(Method method, const URL&amp; action, const String&amp; target, const String&amp; contentType, Ref&lt;FormState&gt;&amp;&amp; state, Ref&lt;FormData&gt;&amp;&amp; data, const String&amp; boundary, LockHistory lockHistory, Event* event)
</ins><span class="cx">     : m_method(method)
</span><span class="cx">     , m_action(action)
</span><span class="cx">     , m_target(target)
</span><span class="cx">     , m_contentType(contentType)
</span><del>-    , m_formState(state)
-    , m_formData(data)
</del><ins>+    , m_formState(WTFMove(state))
+    , m_formData(WTFMove(data))
</ins><span class="cx">     , m_boundary(boundary)
</span><span class="cx">     , m_lockHistory(lockHistory)
</span><span class="cx">     , m_event(event)
</span><span class="lines">@@ -155,10 +144,8 @@
</span><span class="cx">     return document.textEncoding();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;FormSubmission&gt; FormSubmission::create(HTMLFormElement* form, const Attributes&amp; attributes, PassRefPtr&lt;Event&gt; event, LockHistory lockHistory, FormSubmissionTrigger trigger)
</del><ins>+Ref&lt;FormSubmission&gt; FormSubmission::create(HTMLFormElement&amp; form, const Attributes&amp; attributes, Event* event, LockHistory lockHistory, FormSubmissionTrigger trigger)
</ins><span class="cx"> {
</span><del>-    ASSERT(form);
-
</del><span class="cx">     HTMLFormControlElement* submitButton = nullptr;
</span><span class="cx">     if (event &amp;&amp; event-&gt;target()) {
</span><span class="cx">         for (Node* node = event-&gt;target()-&gt;toNode(); node; node = node-&gt;parentNode()) {
</span><span class="lines">@@ -169,8 +156,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    FormSubmission::Attributes copiedAttributes;
-    copiedAttributes.copyFrom(attributes);
</del><ins>+    auto copiedAttributes = attributes;
</ins><span class="cx">     if (submitButton) {
</span><span class="cx">         AtomicString attributeValue;
</span><span class="cx">         if (!(attributeValue = submitButton-&gt;attributeWithoutSynchronization(formactionAttr)).isNull())
</span><span class="lines">@@ -183,15 +169,15 @@
</span><span class="cx">             copiedAttributes.setTarget(attributeValue);
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    Document&amp; document = form-&gt;document();
-    URL actionURL = document.completeURL(copiedAttributes.action().isEmpty() ? document.url().string() : copiedAttributes.action());
</del><ins>+    auto&amp; document = form.document();
+    auto actionURL = document.completeURL(copiedAttributes.action().isEmpty() ? document.url().string() : copiedAttributes.action());
</ins><span class="cx">     bool isMailtoForm = actionURL.protocolIs(&quot;mailto&quot;);
</span><span class="cx">     bool isMultiPartForm = false;
</span><del>-    String encodingType = copiedAttributes.encodingType();
</del><ins>+    auto encodingType = copiedAttributes.encodingType();
</ins><span class="cx"> 
</span><span class="cx">     document.contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(actionURL, ContentSecurityPolicy::InsecureRequestType::FormSubmission);
</span><span class="cx"> 
</span><del>-    if (copiedAttributes.method() == PostMethod) {
</del><ins>+    if (copiedAttributes.method() == Method::Post) {
</ins><span class="cx">         isMultiPartForm = copiedAttributes.isMultiPartForm();
</span><span class="cx">         if (isMultiPartForm &amp;&amp; isMailtoForm) {
</span><span class="cx">             encodingType = &quot;application/x-www-form-urlencoded&quot;;
</span><span class="lines">@@ -199,19 +185,19 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    TextEncoding dataEncoding = isMailtoForm ? UTF8Encoding() : encodingFromAcceptCharset(copiedAttributes.acceptCharset(), document);
-    RefPtr&lt;DOMFormData&gt; domFormData = DOMFormData::create(dataEncoding.encodingForFormSubmission());
-    Vector&lt;std::pair&lt;String, String&gt;&gt; formValues;
</del><ins>+    auto dataEncoding = isMailtoForm ? UTF8Encoding() : encodingFromAcceptCharset(copiedAttributes.acceptCharset(), document);
+    auto domFormData = DOMFormData::create(dataEncoding.encodingForFormSubmission());
+    StringPairVector formValues;
</ins><span class="cx"> 
</span><span class="cx">     bool containsPasswordData = false;
</span><del>-    for (auto&amp; control : form-&gt;associatedElements()) {
-        HTMLElement&amp; element = control-&gt;asHTMLElement();
</del><ins>+    for (auto&amp; control : form.associatedElements()) {
+        auto&amp; element = control-&gt;asHTMLElement();
</ins><span class="cx">         if (!element.isDisabledFormControl())
</span><del>-            control-&gt;appendFormData(*domFormData, isMultiPartForm);
</del><ins>+            control-&gt;appendFormData(domFormData, isMultiPartForm);
</ins><span class="cx">         if (is&lt;HTMLInputElement&gt;(element)) {
</span><del>-            HTMLInputElement&amp; input = downcast&lt;HTMLInputElement&gt;(element);
</del><ins>+            auto&amp; input = downcast&lt;HTMLInputElement&gt;(element);
</ins><span class="cx">             if (input.isTextField()) {
</span><del>-                formValues.append(std::pair&lt;String, String&gt;(input.name().string(), input.value()));
</del><ins>+                formValues.append({ input.name().string(), input.value() });
</ins><span class="cx">                 input.addSearchResult();
</span><span class="cx">             }
</span><span class="cx">             if (input.isPasswordField() &amp;&amp; !input.value().isEmpty())
</span><span class="lines">@@ -223,11 +209,11 @@
</span><span class="cx">     String boundary;
</span><span class="cx"> 
</span><span class="cx">     if (isMultiPartForm) {
</span><del>-        formData = FormData::createMultiPart(*(static_cast&lt;FormDataList*&gt;(domFormData.get())), domFormData-&gt;encoding(), &amp;document);
</del><ins>+        formData = FormData::createMultiPart(domFormData, domFormData-&gt;encoding(), &amp;document);
</ins><span class="cx">         boundary = formData-&gt;boundary().data();
</span><span class="cx">     } else {
</span><del>-        formData = FormData::create(*(static_cast&lt;FormDataList*&gt;(domFormData.get())), domFormData-&gt;encoding(), attributes.method() == GetMethod ? FormData::FormURLEncoded : FormData::parseEncodingType(encodingType));
-        if (copiedAttributes.method() == PostMethod &amp;&amp; isMailtoForm) {
</del><ins>+        formData = FormData::create(domFormData, domFormData-&gt;encoding(), attributes.method() == Method::Get ? FormData::FormURLEncoded : FormData::parseEncodingType(encodingType));
+        if (copiedAttributes.method() == Method::Post &amp;&amp; isMailtoForm) {
</ins><span class="cx">             // Convert the form data into a string that we put into the URL.
</span><span class="cx">             appendMailtoPostFormDataToURL(actionURL, *formData, encodingType);
</span><span class="cx">             formData = FormData::create();
</span><span class="lines">@@ -236,14 +222,17 @@
</span><span class="cx"> 
</span><span class="cx">     formData-&gt;setIdentifier(generateFormDataIdentifier());
</span><span class="cx">     formData-&gt;setContainsPasswordData(containsPasswordData);
</span><ins>+
</ins><span class="cx">     String targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document.baseTarget() : copiedAttributes.target();
</span><del>-    auto formState = FormState::create(form, formValues, &amp;document, trigger);
-    return adoptRef(*new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, WTFMove(formState), WTFMove(formData), boundary, lockHistory, event));
</del><ins>+
+    auto formState = FormState::create(form, WTFMove(formValues), document, trigger);
+
+    return adoptRef(*new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, WTFMove(formState), formData.releaseNonNull(), boundary, lockHistory, event));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> URL FormSubmission::requestURL() const
</span><span class="cx"> {
</span><del>-    if (m_method == FormSubmission::PostMethod)
</del><ins>+    if (m_method == Method::Post)
</ins><span class="cx">         return m_action;
</span><span class="cx"> 
</span><span class="cx">     URL requestURL(m_action);
</span><span class="lines">@@ -259,7 +248,7 @@
</span><span class="cx">     if (!m_referrer.isEmpty())
</span><span class="cx">         frameRequest.resourceRequest().setHTTPReferrer(m_referrer);
</span><span class="cx"> 
</span><del>-    if (m_method == FormSubmission::PostMethod) {
</del><ins>+    if (m_method == Method::Post) {
</ins><span class="cx">         frameRequest.resourceRequest().setHTTPMethod(&quot;POST&quot;);
</span><span class="cx">         frameRequest.resourceRequest().setHTTPBody(m_formData.copyRef());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFormSubmissionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FormSubmission.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FormSubmission.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FormSubmission.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -36,31 +36,21 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class Document;
</del><span class="cx"> class Event;
</span><span class="cx"> class FormData;
</span><ins>+
</ins><span class="cx"> struct FrameLoadRequest;
</span><del>-class HTMLFormElement;
-class TextEncoding;
</del><span class="cx"> 
</span><span class="cx"> class FormSubmission : public RefCounted&lt;FormSubmission&gt; {
</span><span class="cx"> public:
</span><del>-    enum Method { GetMethod, PostMethod };
</del><ins>+    enum class Method { Get, Post };
</ins><span class="cx"> 
</span><span class="cx">     class Attributes {
</span><del>-        WTF_MAKE_NONCOPYABLE(Attributes);
</del><span class="cx">     public:
</span><del>-        Attributes()
-            : m_method(GetMethod)
-            , m_isMultiPartForm(false)
-            , m_encodingType(&quot;application/x-www-form-urlencoded&quot;)
-        {
-        }
-
</del><span class="cx">         Method method() const { return m_method; }
</span><span class="cx">         static Method parseMethodType(const String&amp;);
</span><span class="cx">         void updateMethodType(const String&amp;);
</span><del>-        static String methodString(Method method) { return method == PostMethod ? &quot;post&quot; : &quot;get&quot;; }
</del><ins>+        static ASCIILiteral methodString(Method method) { return ASCIILiteral { method == Method::Post ? &quot;post&quot; : &quot;get&quot; }; }
</ins><span class="cx"> 
</span><span class="cx">         const String&amp; action() const { return m_action; }
</span><span class="cx">         void parseAction(const String&amp;);
</span><span class="lines">@@ -76,42 +66,38 @@
</span><span class="cx">         const String&amp; acceptCharset() const { return m_acceptCharset; }
</span><span class="cx">         void setAcceptCharset(const String&amp; value) { m_acceptCharset = value; }
</span><span class="cx"> 
</span><del>-        void copyFrom(const Attributes&amp;);
-
</del><span class="cx">     private:
</span><del>-        Method m_method;
-        bool m_isMultiPartForm;
-
</del><ins>+        Method m_method { Method::Get };
+        bool m_isMultiPartForm { false };
</ins><span class="cx">         String m_action;
</span><span class="cx">         String m_target;
</span><del>-        String m_encodingType;
</del><ins>+        String m_encodingType { ASCIILiteral { &quot;application/x-www-form-urlencoded&quot; } };
</ins><span class="cx">         String m_acceptCharset;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static Ref&lt;FormSubmission&gt; create(HTMLFormElement*, const Attributes&amp;, PassRefPtr&lt;Event&gt; event, LockHistory, FormSubmissionTrigger);
</del><ins>+    static Ref&lt;FormSubmission&gt; create(HTMLFormElement&amp;, const Attributes&amp;, Event*, LockHistory, FormSubmissionTrigger);
</ins><span class="cx"> 
</span><span class="cx">     void populateFrameLoadRequest(FrameLoadRequest&amp;);
</span><del>-    
</del><span class="cx">     URL requestURL() const;
</span><span class="cx"> 
</span><span class="cx">     Method method() const { return m_method; }
</span><span class="cx">     const URL&amp; action() const { return m_action; }
</span><span class="cx">     const String&amp; target() const { return m_target; }
</span><del>-    void clearTarget() { m_target = String(); }
</del><span class="cx">     const String&amp; contentType() const { return m_contentType; }
</span><del>-    FormState* state() const { return m_formState.get(); }
-    FormData* data() const { return m_formData.get(); }
</del><ins>+    FormState&amp; state() const { return m_formState; }
+    FormData&amp; data() const { return m_formData; }
</ins><span class="cx">     const String boundary() const { return m_boundary; }
</span><span class="cx">     LockHistory lockHistory() const { return m_lockHistory; }
</span><span class="cx">     Event* event() const { return m_event.get(); }
</span><ins>+    const String&amp; referrer() const { return m_referrer; }
+    const String&amp; origin() const { return m_origin; }
</ins><span class="cx"> 
</span><del>-    const String&amp; referrer() const { return m_referrer; }
</del><ins>+    void clearTarget() { m_target = { }; }
</ins><span class="cx">     void setReferrer(const String&amp; referrer) { m_referrer = referrer; }
</span><del>-    const String&amp; origin() const { return m_origin; }
</del><span class="cx">     void setOrigin(const String&amp; origin) { m_origin = origin; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    FormSubmission(Method, const URL&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt;, PassRefPtr&lt;FormData&gt;, const String&amp; boundary, LockHistory, PassRefPtr&lt;Event&gt;);
</del><ins>+    FormSubmission(Method, const URL&amp; action, const String&amp; target, const String&amp; contentType, Ref&lt;FormState&gt;&amp;&amp;, Ref&lt;FormData&gt;&amp;&amp;, const String&amp; boundary, LockHistory, Event*);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Hold an instance of Attributes instead of individual members.
</span><span class="cx">     Method m_method;
</span><span class="lines">@@ -118,8 +104,8 @@
</span><span class="cx">     URL m_action;
</span><span class="cx">     String m_target;
</span><span class="cx">     String m_contentType;
</span><del>-    RefPtr&lt;FormState&gt; m_formState;
-    RefPtr&lt;FormData&gt; m_formData;
</del><ins>+    Ref&lt;FormState&gt; m_formState;
+    Ref&lt;FormData&gt; m_formData;
</ins><span class="cx">     String m_boundary;
</span><span class="cx">     LockHistory m_lockHistory;
</span><span class="cx">     RefPtr&lt;Event&gt; m_event;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -364,17 +364,15 @@
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::submitForm(Ref&lt;FormSubmission&gt;&amp;&amp; submission)
</span><span class="cx"> {
</span><del>-    ASSERT(submission-&gt;method() == FormSubmission::PostMethod || submission-&gt;method() == FormSubmission::GetMethod);
</del><ins>+    ASSERT(submission-&gt;method() == FormSubmission::Method::Post || submission-&gt;method() == FormSubmission::Method::Get);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Find a good spot for these.
</span><del>-    ASSERT(submission-&gt;data());
-    ASSERT(submission-&gt;state());
-    ASSERT(!submission-&gt;state()-&gt;sourceDocument()-&gt;frame() || submission-&gt;state()-&gt;sourceDocument()-&gt;frame() == &amp;m_frame);
</del><ins>+    ASSERT(!submission-&gt;state().sourceDocument().frame() || submission-&gt;state().sourceDocument().frame() == &amp;m_frame);
</ins><span class="cx"> 
</span><span class="cx">     if (!m_frame.page())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (submission-&gt;state()-&gt;sourceDocument()-&gt;pageCacheState() != Document::NotInPageCache)
</del><ins>+    if (submission-&gt;state().sourceDocument().pageCacheState() != Document::NotInPageCache)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (submission-&gt;action().isEmpty())
</span><span class="lines">@@ -396,12 +394,12 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Frame* targetFrame = findFrameForNavigation(submission-&gt;target(), submission-&gt;state()-&gt;sourceDocument());
</del><ins>+    Frame* targetFrame = findFrameForNavigation(submission-&gt;target(), &amp;submission-&gt;state().sourceDocument());
</ins><span class="cx">     if (!targetFrame) {
</span><span class="cx">         if (!DOMWindow::allowPopUp(&amp;m_frame) &amp;&amp; !ScriptController::processingUserGesture())
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        // FIXME: targetFrame can be 0 for two distinct reasons:
</del><ins>+        // FIXME: targetFrame can be null for two distinct reasons:
</ins><span class="cx">         // 1. The frame was not found by name, so we should try opening a new window.
</span><span class="cx">         // 2. The frame was found, but navigating it was not allowed, e.g. by HTML5 sandbox or by origin checks.
</span><span class="cx">         // Continuing form submission makes no sense in the latter case.
</span><span class="lines">@@ -432,7 +430,7 @@
</span><span class="cx">         m_submittedFormURL = submission-&gt;requestURL();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    submission-&gt;data()-&gt;generateFiles(m_frame.document());
</del><ins>+    submission-&gt;data().generateFiles(m_frame.document());
</ins><span class="cx">     submission-&gt;setReferrer(outgoingReferrer());
</span><span class="cx">     submission-&gt;setOrigin(outgoingOrigin());
</span><span class="cx"> 
</span><span class="lines">@@ -658,20 +656,18 @@
</span><span class="cx">     if (!m_documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    ASSERT(m_frame.document());
+    auto&amp; document = *m_frame.document();
+
</ins><span class="cx">     double delay;
</span><span class="cx">     String urlString;
</span><span class="cx">     if (!parseHTTPRefresh(m_documentLoader-&gt;response().httpHeaderField(HTTPHeaderName::Refresh), delay, urlString))
</span><span class="cx">         return;
</span><del>-    URL completedURL;
-    if (urlString.isEmpty())
-        completedURL = m_frame.document()-&gt;url();
-    else
-        completedURL = m_frame.document()-&gt;completeURL(urlString);
-
</del><ins>+    auto completedURL = urlString.isEmpty() ? document.url() : document.completeURL(urlString);
</ins><span class="cx">     if (!protocolIsJavaScript(completedURL))
</span><del>-        m_frame.navigationScheduler().scheduleRedirect(m_frame.document(), delay, completedURL);
</del><ins>+        m_frame.navigationScheduler().scheduleRedirect(document, delay, completedURL);
</ins><span class="cx">     else {
</span><del>-        String message = &quot;Refused to refresh &quot; + m_frame.document()-&gt;url().stringCenterEllipsizedToLength() + &quot; to a javascript: URL&quot;;
</del><ins>+        auto message = &quot;Refused to refresh &quot; + document.url().stringCenterEllipsizedToLength() + &quot; to a javascript: URL&quot;;
</ins><span class="cx">         m_frame.document()-&gt;addConsoleMessage(MessageSource::Security, MessageLevel::Error, message);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1137,7 +1133,7 @@
</span><span class="cx">         || event-&gt;target()-&gt;toNode()-&gt;document().pageCacheState() == Document::NotInPageCache);
</span><span class="cx"> 
</span><span class="cx">     // Protect frame from getting blown away inside dispatchBeforeLoadEvent in loadWithDocumentLoader.
</span><del>-    Ref&lt;Frame&gt; protect(m_frame);
</del><ins>+    auto protectFrame = makeRef(m_frame);
</ins><span class="cx"> 
</span><span class="cx">     URL url = request.resourceRequest().url();
</span><span class="cx"> 
</span><span class="lines">@@ -1170,7 +1166,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: It's possible this targetFrame will not be the same frame that was targeted by the actual
</span><span class="cx">     // load if frame names have changed.
</span><del>-    Frame* sourceFrame = formState ? formState-&gt;sourceDocument()-&gt;frame() : &amp;m_frame;
</del><ins>+    Frame* sourceFrame = formState ? formState-&gt;sourceDocument().frame() : &amp;m_frame;
</ins><span class="cx">     if (!sourceFrame)
</span><span class="cx">         sourceFrame = &amp;m_frame;
</span><span class="cx">     Frame* targetFrame = sourceFrame-&gt;loader().findFrameForNavigation(request.frameName());
</span><span class="lines">@@ -1254,7 +1250,7 @@
</span><span class="cx">         oldDocumentLoader-&gt;setLastCheckedRequest(ResourceRequest());
</span><span class="cx">         policyChecker().stopCheck();
</span><span class="cx">         policyChecker().setLoadType(newLoadType);
</span><del>-        policyChecker().checkNavigationPolicy(request, false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this](const ResourceRequest&amp; request, FormState*, bool shouldContinue) {
</del><ins>+        policyChecker().checkNavigationPolicy(request, false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this] (const ResourceRequest&amp; request, FormState*, bool shouldContinue) {
</ins><span class="cx">             continueFragmentScrollAfterNavigationPolicy(request, shouldContinue);
</span><span class="cx">         });
</span><span class="cx">         return;
</span><span class="lines">@@ -1450,7 +1446,7 @@
</span><span class="cx">         oldDocumentLoader-&gt;setTriggeringAction(action);
</span><span class="cx">         oldDocumentLoader-&gt;setLastCheckedRequest(ResourceRequest());
</span><span class="cx">         policyChecker().stopCheck();
</span><del>-        policyChecker().checkNavigationPolicy(loader-&gt;request(), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this](const ResourceRequest&amp; request, FormState*, bool shouldContinue) {
</del><ins>+        policyChecker().checkNavigationPolicy(loader-&gt;request(), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this] (const ResourceRequest&amp; request, FormState*, bool shouldContinue) {
</ins><span class="cx">             continueFragmentScrollAfterNavigationPolicy(request, shouldContinue);
</span><span class="cx">         });
</span><span class="cx">         return;
</span><span class="lines">@@ -1477,7 +1473,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    policyChecker().checkNavigationPolicy(loader-&gt;request(), false /* didReceiveRedirectResponse */, loader, formState, [this, allowNavigationToInvalidURL](const ResourceRequest&amp; request, FormState* formState, bool shouldContinue) {
</del><ins>+    policyChecker().checkNavigationPolicy(loader-&gt;request(), false /* didReceiveRedirectResponse */, loader, formState, [this, allowNavigationToInvalidURL] (const ResourceRequest&amp; request, FormState* formState, bool shouldContinue) {
</ins><span class="cx">         continueLoadAfterNavigationPolicy(request, formState, shouldContinue, allowNavigationToInvalidURL);
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -2709,7 +2705,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        policyChecker().checkNewWindowPolicy(action, workingResourceRequest, WTFMove(formState), frameName, [this, allowNavigationToInvalidURL, openerPolicy](const ResourceRequest&amp; request, FormState* formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
</del><ins>+        policyChecker().checkNewWindowPolicy(action, workingResourceRequest, WTFMove(formState), frameName, [this, allowNavigationToInvalidURL, openerPolicy] (const ResourceRequest&amp; request, FormState* formState, const String&amp; frameName, const NavigationAction&amp; action, bool shouldContinue) {
</ins><span class="cx">             continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, allowNavigationToInvalidURL, openerPolicy);
</span><span class="cx">         });
</span><span class="cx">         return;
</span><span class="lines">@@ -2767,11 +2763,11 @@
</span><span class="cx">     if (error.isNull()) {
</span><span class="cx">         ASSERT(!newRequest.isNull());
</span><span class="cx"> 
</span><del>-        if (!documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadSynchronously(newRequest, error, response, data)) {
</del><ins>+        if (!documentLoader()-&gt;applicationCacheHost().maybeLoadSynchronously(newRequest, error, response, data)) {
</ins><span class="cx">             Vector&lt;char&gt; buffer;
</span><span class="cx">             platformStrategies()-&gt;loaderStrategy()-&gt;loadResourceSynchronously(networkingContext(), identifier, newRequest, storedCredentials, clientCredentialPolicy, error, response, buffer);
</span><span class="cx">             data = SharedBuffer::adoptVector(buffer);
</span><del>-            documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackSynchronously(newRequest, error, response, data);
</del><ins>+            documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackSynchronously(newRequest, error, response, data);
</ins><span class="cx">             ResourceLoadObserver::sharedObserver().logSubresourceLoading(&amp;m_frame, newRequest, response);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -3106,7 +3102,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_client.dispatchWillSubmitForm(formState, [this](PolicyAction action) {
</del><ins>+    m_client.dispatchWillSubmitForm(*formState, [this] (PolicyAction action) {
</ins><span class="cx">         policyChecker().continueLoadAfterWillSubmitForm(action);
</span><span class="cx">     });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoaderClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoaderClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/FrameLoaderClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -177,14 +177,14 @@
</span><span class="cx">     virtual void dispatchShow() = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual void dispatchDecidePolicyForResponse(const ResourceResponse&amp;, const ResourceRequest&amp;, FramePolicyFunction) = 0;
</span><del>-    virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, const String&amp; frameName, FramePolicyFunction) = 0;
-    virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, PassRefPtr&lt;FormState&gt;, FramePolicyFunction) = 0;
</del><ins>+    virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, const String&amp; frameName, FramePolicyFunction) = 0;
+    virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&amp;, const ResourceRequest&amp;, FormState*, FramePolicyFunction) = 0;
</ins><span class="cx">     virtual void cancelPolicyCheck() = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual void dispatchUnableToImplementPolicy(const ResourceError&amp;) = 0;
</span><span class="cx"> 
</span><del>-    virtual void dispatchWillSendSubmitEvent(PassRefPtr&lt;FormState&gt;) = 0;
-    virtual void dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt;, FramePolicyFunction) = 0;
</del><ins>+    virtual void dispatchWillSendSubmitEvent(Ref&lt;FormState&gt;&amp;&amp;) = 0;
+    virtual void dispatchWillSubmitForm(FormState&amp;, FramePolicyFunction) = 0;
</ins><span class="cx"> 
</span><span class="cx">     virtual void revertToProvisionalState(DocumentLoader*) = 0;
</span><span class="cx">     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&amp;) = 0;
</span><span class="lines">@@ -272,15 +272,13 @@
</span><span class="cx">     virtual bool canCachePage() const = 0;
</span><span class="cx">     virtual void convertMainResourceLoadToDownload(DocumentLoader*, SessionID, const ResourceRequest&amp;, const ResourceResponse&amp;) = 0;
</span><span class="cx"> 
</span><del>-    virtual RefPtr&lt;Frame&gt; createFrame(const URL&amp;, const String&amp; name, HTMLFrameOwnerElement*, const String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0;
-    virtual RefPtr&lt;Widget&gt; createPlugin(const IntSize&amp;, HTMLPlugInElement*, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool loadManually) = 0;
</del><ins>+    virtual RefPtr&lt;Frame&gt; createFrame(const URL&amp;, const String&amp; name, HTMLFrameOwnerElement&amp;, const String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0;
+    virtual RefPtr&lt;Widget&gt; createPlugin(const IntSize&amp;, HTMLPlugInElement&amp;, const URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool loadManually) = 0;
</ins><span class="cx">     virtual void recreatePlugin(Widget*) = 0;
</span><span class="cx">     virtual void redirectDataToPlugin(Widget* pluginWidget) = 0;
</span><span class="cx"> 
</span><del>-    virtual PassRefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement*, const URL&amp; baseURL, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues) = 0;
</del><ins>+    virtual RefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement&amp;, const URL&amp; baseURL, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues) = 0;
</ins><span class="cx"> 
</span><del>-    virtual void dispatchDidFailToStartPlugin(const PluginViewBase*) const { }
-
</del><span class="cx">     virtual ObjectContentType objectContentType(const URL&amp;, const String&amp; mimeType) = 0;
</span><span class="cx">     virtual String overrideMediaType() const = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -294,6 +292,7 @@
</span><span class="cx">     virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const = 0;
</span><span class="cx">     virtual NSDictionary *dataDetectionContext() { return nullptr; }
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if PLATFORM(WIN) &amp;&amp; USE(CFURLCONNECTION)
</span><span class="cx">     // FIXME: Windows should use willCacheResponse - &lt;https://bugs.webkit.org/show_bug.cgi?id=57257&gt;.
</span><span class="cx">     virtual bool shouldCacheResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&amp;, const unsigned char* data, unsigned long long length) = 0;
</span><span class="lines">@@ -309,10 +308,10 @@
</span><span class="cx">     // Clients that generally disallow universal access can make exceptions for particular URLs.
</span><span class="cx">     virtual bool shouldForceUniversalAccessFromLocalURL(const URL&amp;) { return false; }
</span><span class="cx"> 
</span><del>-    virtual PassRefPtr&lt;FrameNetworkingContext&gt; createNetworkingContext() = 0;
</del><ins>+    virtual Ref&lt;FrameNetworkingContext&gt; createNetworkingContext() = 0;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(REQUEST_AUTOCOMPLETE)
</span><del>-    virtual void didRequestAutocomplete(PassRefPtr&lt;FormState&gt;) = 0;
</del><ins>+    virtual void didRequestAutocomplete(Ref&lt;FormState&gt;&amp;&amp;) = 0;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     virtual bool shouldPaintBrokenImage(const URL&amp;) const { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderHistoryControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/HistoryController.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/HistoryController.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/HistoryController.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HistoryController::pushState(PassRefPtr&lt;SerializedScriptValue&gt; stateObject, const String&amp; title, const String&amp; urlString)
</del><ins>+void HistoryController::pushState(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp; stateObject, const String&amp; title, const String&amp; urlString)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_currentItem)
</span><span class="cx">         return;
</span><span class="lines">@@ -859,7 +859,7 @@
</span><span class="cx">     // Override data in the current item (created by createItemTree) to reflect
</span><span class="cx">     // the pushState() arguments.
</span><span class="cx">     m_currentItem-&gt;setTitle(title);
</span><del>-    m_currentItem-&gt;setStateObject(stateObject);
</del><ins>+    m_currentItem-&gt;setStateObject(WTFMove(stateObject));
</ins><span class="cx">     m_currentItem-&gt;setURLString(urlString);
</span><span class="cx"> 
</span><span class="cx">     LOG(History, &quot;HistoryController %p pushState: Adding top item %p, setting url of current item %p to %s&quot;, this, topItem.ptr(), m_currentItem.get(), urlString.ascii().data());
</span><span class="lines">@@ -873,7 +873,7 @@
</span><span class="cx">     m_frame.loader().client().updateGlobalHistory();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HistoryController::replaceState(PassRefPtr&lt;SerializedScriptValue&gt; stateObject, const String&amp; title, const String&amp; urlString)
</del><ins>+void HistoryController::replaceState(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp; stateObject, const String&amp; title, const String&amp; urlString)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_currentItem)
</span><span class="cx">         return;
</span><span class="lines">@@ -883,7 +883,7 @@
</span><span class="cx">     if (!urlString.isEmpty())
</span><span class="cx">         m_currentItem-&gt;setURLString(urlString);
</span><span class="cx">     m_currentItem-&gt;setTitle(title);
</span><del>-    m_currentItem-&gt;setStateObject(stateObject);
</del><ins>+    m_currentItem-&gt;setStateObject(WTFMove(stateObject));
</ins><span class="cx">     m_currentItem-&gt;setFormData(nullptr);
</span><span class="cx">     m_currentItem-&gt;setFormContentType(String());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderHistoryControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/HistoryController.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/HistoryController.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/HistoryController.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -84,8 +84,8 @@
</span><span class="cx">     HistoryItem* provisionalItem() const { return m_provisionalItem.get(); }
</span><span class="cx">     void setProvisionalItem(HistoryItem*);
</span><span class="cx"> 
</span><del>-    void pushState(PassRefPtr&lt;SerializedScriptValue&gt;, const String&amp; title, const String&amp; url);
-    void replaceState(PassRefPtr&lt;SerializedScriptValue&gt;, const String&amp; title, const String&amp; url);
</del><ins>+    void pushState(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp;, const String&amp; title, const String&amp; url);
+    void replaceState(RefPtr&lt;SerializedScriptValue&gt;&amp;&amp;, const String&amp; title, const String&amp; url);
</ins><span class="cx"> 
</span><span class="cx">     void setDefersLoading(bool);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderImageLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ImageLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ImageLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/ImageLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">         options.sameOriginDataURLFlag = SameOriginDataURLFlag::Set;
</span><span class="cx"> 
</span><span class="cx">         CachedResourceRequest request(ResourceRequest(document.completeURL(sourceURI(attr))), options);
</span><del>-        request.setInitiator(&amp;element());
</del><ins>+        request.setInitiator(element());
</ins><span class="cx"> 
</span><span class="cx">         request.setAsPotentiallyCrossOrigin(element().attributeWithoutSynchronization(HTMLNames::crossoriginAttr), document);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderNavigationSchedulercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/NavigationScheduler.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/NavigationScheduler.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/NavigationScheduler.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -68,6 +68,16 @@
</span><span class="cx">         , m_userGestureToForward(UserGestureIndicator::currentUserGesture())
</span><span class="cx">     {
</span><span class="cx">     }
</span><ins>+    ScheduledNavigation(double delay, LockHistory lockHistory, LockBackForwardList lockBackForwardList, bool wasDuringLoad, bool isLocationChange, ShouldOpenExternalURLsPolicy externalURLPolicy)
+        : m_delay(delay)
+        , m_lockHistory(lockHistory)
+        , m_lockBackForwardList(lockBackForwardList)
+        , m_wasDuringLoad(wasDuringLoad)
+        , m_isLocationChange(isLocationChange)
+        , m_userGestureToForward(UserGestureIndicator::currentUserGesture())
+        , m_shouldOpenExternalURLsPolicy(externalURLPolicy)
+    {
+    }
</ins><span class="cx">     virtual ~ScheduledNavigation() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void fire(Frame&amp;) = 0;
</span><span class="lines">@@ -81,13 +91,12 @@
</span><span class="cx">     LockBackForwardList lockBackForwardList() const { return m_lockBackForwardList; }
</span><span class="cx">     bool wasDuringLoad() const { return m_wasDuringLoad; }
</span><span class="cx">     bool isLocationChange() const { return m_isLocationChange; }
</span><del>-    RefPtr&lt;UserGestureToken&gt; userGestureToForward() const { return m_userGestureToForward; }
</del><ins>+    UserGestureToken* userGestureToForward() const { return m_userGestureToForward.get(); }
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     void clearUserGesture() { m_userGestureToForward = nullptr; }
</span><ins>+    ShouldOpenExternalURLsPolicy shouldOpenExternalURLs() const { return m_shouldOpenExternalURLsPolicy; }
</ins><span class="cx"> 
</span><del>-    ShouldOpenExternalURLsPolicy m_shouldOpenExternalURLsPolicy { ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-
</del><span class="cx"> private:
</span><span class="cx">     double m_delay;
</span><span class="cx">     LockHistory m_lockHistory;
</span><span class="lines">@@ -95,19 +104,17 @@
</span><span class="cx">     bool m_wasDuringLoad;
</span><span class="cx">     bool m_isLocationChange;
</span><span class="cx">     RefPtr&lt;UserGestureToken&gt; m_userGestureToForward;
</span><ins>+    ShouldOpenExternalURLsPolicy m_shouldOpenExternalURLsPolicy { ShouldOpenExternalURLsPolicy::ShouldNotAllow };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class ScheduledURLNavigation : public ScheduledNavigation {
</span><span class="cx"> protected:
</span><del>-    ScheduledURLNavigation(Document* initiatingDocument, double delay, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList, bool duringLoad, bool isLocationChange)
-        : ScheduledNavigation(delay, lockHistory, lockBackForwardList, duringLoad, isLocationChange)
</del><ins>+    ScheduledURLNavigation(Document&amp; initiatingDocument, double delay, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList, bool duringLoad, bool isLocationChange)
+        : ScheduledNavigation(delay, lockHistory, lockBackForwardList, duringLoad, isLocationChange, initiatingDocument.shouldOpenExternalURLsPolicyToPropagate())
</ins><span class="cx">         , m_securityOrigin(securityOrigin)
</span><span class="cx">         , m_url(url)
</span><span class="cx">         , m_referrer(referrer)
</span><del>-        , m_haveToldClient(false)
</del><span class="cx">     {
</span><del>-        if (initiatingDocument)
-            m_shouldOpenExternalURLsPolicy = initiatingDocument-&gt;shouldOpenExternalURLsPolicyToPropagate();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void fire(Frame&amp; frame) override
</span><span class="lines">@@ -115,7 +122,7 @@
</span><span class="cx">         UserGestureIndicator gestureIndicator(userGestureToForward());
</span><span class="cx"> 
</span><span class="cx">         ResourceRequest resourceRequest(m_url, m_referrer, UseProtocolCachePolicy);
</span><del>-        FrameLoadRequest frameRequest(m_securityOrigin.get(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(m_securityOrigin.get(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx"> 
</span><span class="cx">         frame.loader().changeLocation(frameRequest);
</span><span class="cx">     }
</span><span class="lines">@@ -152,12 +159,12 @@
</span><span class="cx">     RefPtr&lt;SecurityOrigin&gt; m_securityOrigin;
</span><span class="cx">     URL m_url;
</span><span class="cx">     String m_referrer;
</span><del>-    bool m_haveToldClient;
</del><ins>+    bool m_haveToldClient { false };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class ScheduledRedirect : public ScheduledURLNavigation {
</span><span class="cx"> public:
</span><del>-    ScheduledRedirect(Document* initiatingDocument, double delay, SecurityOrigin* securityOrigin, const URL&amp; url, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</del><ins>+    ScheduledRedirect(Document&amp; initiatingDocument, double delay, SecurityOrigin* securityOrigin, const URL&amp; url, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</ins><span class="cx">         : ScheduledURLNavigation(initiatingDocument, delay, securityOrigin, url, String(), lockHistory, lockBackForwardList, false, false)
</span><span class="cx">     {
</span><span class="cx">         clearUserGesture();
</span><span class="lines">@@ -173,7 +180,7 @@
</span><span class="cx">         UserGestureIndicator gestureIndicator(userGestureToForward());
</span><span class="cx">         bool refresh = equalIgnoringFragmentIdentifier(frame.document()-&gt;url(), url());
</span><span class="cx">         ResourceRequest resourceRequest(url(), referrer(), refresh ? ReloadIgnoringCacheData : UseProtocolCachePolicy);
</span><del>-        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx"> 
</span><span class="cx">         frame.loader().changeLocation(frameRequest);
</span><span class="cx">     }
</span><span class="lines">@@ -181,7 +188,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ScheduledLocationChange : public ScheduledURLNavigation {
</span><span class="cx"> public:
</span><del>-    ScheduledLocationChange(Document* initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList, bool duringLoad)
</del><ins>+    ScheduledLocationChange(Document&amp; initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList, bool duringLoad)
</ins><span class="cx">         : ScheduledURLNavigation(initiatingDocument, 0.0, securityOrigin, url, referrer, lockHistory, lockBackForwardList, duringLoad, true) { }
</span><span class="cx"> 
</span><span class="cx">     void fire(Frame&amp; frame) override
</span><span class="lines">@@ -189,7 +196,7 @@
</span><span class="cx">         UserGestureIndicator gestureIndicator(userGestureToForward());
</span><span class="cx"> 
</span><span class="cx">         ResourceRequest resourceRequest(url(), referrer(), UseProtocolCachePolicy);
</span><del>-        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx">         frame.loader().changeLocation(frameRequest);
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="lines">@@ -196,7 +203,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ScheduledRefresh : public ScheduledURLNavigation {
</span><span class="cx"> public:
</span><del>-    ScheduledRefresh(Document* initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer)
</del><ins>+    ScheduledRefresh(Document&amp; initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer)
</ins><span class="cx">         : ScheduledURLNavigation(initiatingDocument, 0.0, securityOrigin, url, referrer, LockHistory::Yes, LockBackForwardList::Yes, false, true)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="lines">@@ -206,7 +213,7 @@
</span><span class="cx">         UserGestureIndicator gestureIndicator(userGestureToForward());
</span><span class="cx"> 
</span><span class="cx">         ResourceRequest resourceRequest(url(), referrer(), ReloadIgnoringCacheData);
</span><del>-        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, &quot;_self&quot;, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx">         frame.loader().changeLocation(frameRequest);
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="lines">@@ -226,7 +233,7 @@
</span><span class="cx">         if (!m_historySteps) {
</span><span class="cx">             // Special case for go(0) from a frame -&gt; reload only the frame
</span><span class="cx">             // To follow Firefox and IE's behavior, history reload can only navigate the self frame.
</span><del>-            frame.loader().urlSelected(frame.document()-&gt;url(), &quot;_self&quot;, 0, lockHistory(), lockBackForwardList(), MaybeSendReferrer, m_shouldOpenExternalURLsPolicy);
</del><ins>+            frame.loader().urlSelected(frame.document()-&gt;url(), &quot;_self&quot;, 0, lockHistory(), lockBackForwardList(), MaybeSendReferrer, shouldOpenExternalURLs());
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -241,15 +248,10 @@
</span><span class="cx"> 
</span><span class="cx"> class ScheduledFormSubmission : public ScheduledNavigation {
</span><span class="cx"> public:
</span><del>-    ScheduledFormSubmission(PassRefPtr&lt;FormSubmission&gt; submission, LockBackForwardList lockBackForwardList, bool duringLoad)
-        : ScheduledNavigation(0, submission-&gt;lockHistory(), lockBackForwardList, duringLoad, true)
-        , m_submission(submission)
-        , m_haveToldClient(false)
</del><ins>+    ScheduledFormSubmission(Ref&lt;FormSubmission&gt;&amp;&amp; submission, LockBackForwardList lockBackForwardList, bool duringLoad)
+        : ScheduledNavigation(0, submission-&gt;lockHistory(), lockBackForwardList, duringLoad, true, submission-&gt;state().sourceDocument().shouldOpenExternalURLsPolicyToPropagate())
+        , m_submission(WTFMove(submission))
</ins><span class="cx">     {
</span><del>-        ASSERT(m_submission-&gt;state());
-
-        if (Document* document = m_submission-&gt;state()-&gt;sourceDocument())
-            m_shouldOpenExternalURLsPolicy = document-&gt;shouldOpenExternalURLsPolicyToPropagate();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void fire(Frame&amp; frame) override
</span><span class="lines">@@ -260,14 +262,14 @@
</span><span class="cx">         // Now that the timer has fired, we need to repeat the security check which normally is done when
</span><span class="cx">         // selecting a target, in case conditions have changed. Other code paths avoid this by targeting
</span><span class="cx">         // without leaving a time window. If we fail the check just silently drop the form submission.
</span><del>-        Document* requestingDocument = m_submission-&gt;state()-&gt;sourceDocument();
-        if (!requestingDocument-&gt;canNavigate(&amp;frame))
</del><ins>+        auto&amp; requestingDocument = m_submission-&gt;state().sourceDocument();
+        if (!requestingDocument.canNavigate(&amp;frame))
</ins><span class="cx">             return;
</span><del>-        FrameLoadRequest frameRequest(requestingDocument-&gt;securityOrigin(), lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(requestingDocument.securityOrigin(), lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx">         m_submission-&gt;populateFrameLoadRequest(frameRequest);
</span><del>-        frame.loader().loadFrameRequest(frameRequest, m_submission-&gt;event(), m_submission-&gt;state());
</del><ins>+        frame.loader().loadFrameRequest(frameRequest, m_submission-&gt;event(), &amp;m_submission-&gt;state());
</ins><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void didStartTimer(Frame&amp; frame, Timer&amp; timer) override
</span><span class="cx">     {
</span><span class="cx">         if (m_haveToldClient)
</span><span class="lines">@@ -293,8 +295,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RefPtr&lt;FormSubmission&gt; m_submission;
-    bool m_haveToldClient;
</del><ins>+    Ref&lt;FormSubmission&gt; m_submission;
+    bool m_haveToldClient { false };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class ScheduledPageBlock final : public ScheduledNavigation {
</span><span class="lines">@@ -313,7 +315,7 @@
</span><span class="cx">         SubstituteData replacementData(SharedBuffer::create(), m_originDocument.url(), replacementResponse, SubstituteData::SessionHistoryVisibility::Hidden);
</span><span class="cx"> 
</span><span class="cx">         ResourceRequest resourceRequest(m_originDocument.url(), emptyString(), ReloadIgnoringCacheData);
</span><del>-        FrameLoadRequest frameRequest(m_originDocument.securityOrigin(), resourceRequest, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(m_originDocument.securityOrigin(), resourceRequest, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
</ins><span class="cx">         frameRequest.setSubstituteData(replacementData);
</span><span class="cx">         frame.loader().load(frameRequest);
</span><span class="cx">     }
</span><span class="lines">@@ -364,7 +366,7 @@
</span><span class="cx">     return NavigationDisablerForBeforeUnload::isNavigationAllowed();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationScheduler::scheduleRedirect(Document* initiatingDocument, double delay, const URL&amp; url)
</del><ins>+void NavigationScheduler::scheduleRedirect(Document&amp; initiatingDocument, double delay, const URL&amp; url)
</ins><span class="cx"> {
</span><span class="cx">     if (!shouldScheduleNavigation(url))
</span><span class="cx">         return;
</span><span class="lines">@@ -375,7 +377,7 @@
</span><span class="cx"> 
</span><span class="cx">     // We want a new back/forward list item if the refresh timeout is &gt; 1 second.
</span><span class="cx">     if (!m_redirect || delay &lt;= m_redirect-&gt;delay()) {
</span><del>-        LockBackForwardList lockBackForwardList = delay &lt;= 1 ? LockBackForwardList::Yes : LockBackForwardList::No;
</del><ins>+        auto lockBackForwardList = delay &lt;= 1 ? LockBackForwardList::Yes : LockBackForwardList::No;
</ins><span class="cx">         schedule(std::make_unique&lt;ScheduledRedirect&gt;(initiatingDocument, delay, m_frame.document()-&gt;securityOrigin(), url, LockHistory::Yes, lockBackForwardList));
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -398,7 +400,7 @@
</span><span class="cx">     return LockBackForwardList::No;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationScheduler::scheduleLocationChange(Document* initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</del><ins>+void NavigationScheduler::scheduleLocationChange(Document&amp; initiatingDocument, SecurityOrigin* securityOrigin, const URL&amp; url, const String&amp; referrer, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</ins><span class="cx"> {
</span><span class="cx">     if (!shouldScheduleNavigation(url))
</span><span class="cx">         return;
</span><span class="lines">@@ -412,10 +414,7 @@
</span><span class="cx">     // fragment part, we don't need to schedule the location change.
</span><span class="cx">     if (url.hasFragmentIdentifier() &amp;&amp; equalIgnoringFragmentIdentifier(m_frame.document()-&gt;url(), url)) {
</span><span class="cx">         ResourceRequest resourceRequest(m_frame.document()-&gt;completeURL(url), referrer, UseProtocolCachePolicy);
</span><del>-        ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy = ShouldOpenExternalURLsPolicy::ShouldNotAllow;
-        if (initiatingDocument)
-            shouldOpenExternalURLsPolicy = initiatingDocument-&gt;shouldOpenExternalURLsPolicyToPropagate();
-        FrameLoadRequest frameRequest(securityOrigin, resourceRequest, &quot;_self&quot;, lockHistory, lockBackForwardList, MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, ReplaceDocumentIfJavaScriptURL, shouldOpenExternalURLsPolicy);
</del><ins>+        FrameLoadRequest frameRequest(securityOrigin, resourceRequest, &quot;_self&quot;, lockHistory, lockBackForwardList, MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, ReplaceDocumentIfJavaScriptURL, initiatingDocument.shouldOpenExternalURLsPolicyToPropagate());
</ins><span class="cx">         loader.changeLocation(frameRequest);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -427,7 +426,7 @@
</span><span class="cx">     schedule(std::make_unique&lt;ScheduledLocationChange&gt;(initiatingDocument, securityOrigin, url, referrer, lockHistory, lockBackForwardList, duringLoad));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationScheduler::scheduleFormSubmission(PassRefPtr&lt;FormSubmission&gt; submission)
</del><ins>+void NavigationScheduler::scheduleFormSubmission(Ref&lt;FormSubmission&gt;&amp;&amp; submission)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_frame.page());
</span><span class="cx"> 
</span><span class="lines">@@ -443,14 +442,14 @@
</span><span class="cx">     // See https://bugs.webkit.org/show_bug.cgi?id=32383 for the original motivation for this.
</span><span class="cx">     LockBackForwardList lockBackForwardList = mustLockBackForwardList(m_frame);
</span><span class="cx">     if (lockBackForwardList == LockBackForwardList::No
</span><del>-        &amp;&amp; (submission-&gt;state()-&gt;formSubmissionTrigger() == SubmittedByJavaScript &amp;&amp; m_frame.tree().parent() &amp;&amp; !UserGestureIndicator::processingUserGesture())) {
</del><ins>+        &amp;&amp; (submission-&gt;state().formSubmissionTrigger() == SubmittedByJavaScript &amp;&amp; m_frame.tree().parent() &amp;&amp; !UserGestureIndicator::processingUserGesture())) {
</ins><span class="cx">         lockBackForwardList = LockBackForwardList::Yes;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    schedule(std::make_unique&lt;ScheduledFormSubmission&gt;(submission, lockBackForwardList, duringLoad));
</del><ins>+    schedule(std::make_unique&lt;ScheduledFormSubmission&gt;(WTFMove(submission), lockBackForwardList, duringLoad));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationScheduler::scheduleRefresh(Document* initiatingDocument)
</del><ins>+void NavigationScheduler::scheduleRefresh(Document&amp; initiatingDocument)
</ins><span class="cx"> {
</span><span class="cx">     if (!shouldScheduleNavigation())
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderNavigationSchedulerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/NavigationScheduler.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/NavigationScheduler.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/NavigationScheduler.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
</span><span class="cx">  * Copyright (C) 2009 Adam Barth. All rights reserved.
</span><span class="cx">  *
</span><span class="lines">@@ -68,10 +68,10 @@
</span><span class="cx">     bool redirectScheduledDuringLoad();
</span><span class="cx">     bool locationChangePending();
</span><span class="cx"> 
</span><del>-    void scheduleRedirect(Document* initiatingDocument, double delay, const URL&amp;);
-    void scheduleLocationChange(Document* initiatingDocument, SecurityOrigin*, const URL&amp;, const String&amp; referrer, LockHistory = LockHistory::Yes, LockBackForwardList = LockBackForwardList::Yes);
-    void scheduleFormSubmission(PassRefPtr&lt;FormSubmission&gt;);
-    void scheduleRefresh(Document* initiatingDocument);
</del><ins>+    void scheduleRedirect(Document&amp; initiatingDocument, double delay, const URL&amp;);
+    void scheduleLocationChange(Document&amp; initiatingDocument, SecurityOrigin*, const URL&amp;, const String&amp; referrer, LockHistory = LockHistory::Yes, LockBackForwardList = LockBackForwardList::Yes);
+    void scheduleFormSubmission(Ref&lt;FormSubmission&gt;&amp;&amp;);
+    void scheduleRefresh(Document&amp; initiatingDocument);
</ins><span class="cx">     void scheduleHistoryNavigation(int steps);
</span><span class="cx">     void schedulePageBlock(Document&amp; originDocument);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ResourceLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx">         return;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (m_documentLoader-&gt;applicationCacheHost()-&gt;maybeLoadResource(*this, m_request, m_request.url()))
</del><ins>+    if (m_documentLoader-&gt;applicationCacheHost().maybeLoadResource(*this, m_request, m_request.url()))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (m_defersLoading) {
</span><span class="lines">@@ -607,7 +607,7 @@
</span><span class="cx"> 
</span><span class="cx"> ResourceRequest ResourceLoader::willSendRequest(ResourceHandle*, ResourceRequest&amp;&amp; request, ResourceResponse&amp;&amp; redirectResponse)
</span><span class="cx"> {
</span><del>-    if (documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForRedirect(this, request, redirectResponse))
</del><ins>+    if (documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForRedirect(this, request, redirectResponse))
</ins><span class="cx">         return WTFMove(request);
</span><span class="cx">     willSendRequestInternal(request, redirectResponse);
</span><span class="cx">     return WTFMove(request);
</span><span class="lines">@@ -620,7 +620,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ResourceLoader::didReceiveResponse(ResourceHandle*, ResourceResponse&amp;&amp; response)
</span><span class="cx"> {
</span><del>-    if (documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForResponse(this, response))
</del><ins>+    if (documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForResponse(this, response))
</ins><span class="cx">         return;
</span><span class="cx">     didReceiveResponse(response);
</span><span class="cx"> }
</span><span class="lines">@@ -642,7 +642,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ResourceLoader::didFail(ResourceHandle*, const ResourceError&amp; error)
</span><span class="cx"> {
</span><del>-    if (documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForError(this, error))
</del><ins>+    if (documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForError(this, error))
</ins><span class="cx">         return;
</span><span class="cx">     didFail(error);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubframeLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubframeLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubframeLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/SubframeLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
</span><span class="cx">  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
</span><span class="cx">  * Copyright (C) 2008 Alp Toker &lt;alp@atoker.com&gt;
</span><span class="lines">@@ -107,23 +107,25 @@
</span><span class="cx"> 
</span><span class="cx"> bool SubframeLoader::pluginIsLoadable(const URL&amp; url, const String&amp; mimeType)
</span><span class="cx"> {
</span><ins>+    auto* document = m_frame.document();
+
</ins><span class="cx">     if (MIMETypeRegistry::isJavaAppletMIMEType(mimeType)) {
</span><span class="cx">         if (!m_frame.settings().isJavaEnabled())
</span><span class="cx">             return false;
</span><del>-        if (document() &amp;&amp; document()-&gt;securityOrigin()-&gt;isLocal() &amp;&amp; !m_frame.settings().isJavaEnabledForLocalFiles())
</del><ins>+        if (document &amp;&amp; document-&gt;securityOrigin()-&gt;isLocal() &amp;&amp; !m_frame.settings().isJavaEnabledForLocalFiles())
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (document()) {
-        if (document()-&gt;isSandboxed(SandboxPlugins))
</del><ins>+    if (document) {
+        if (document-&gt;isSandboxed(SandboxPlugins))
</ins><span class="cx">             return false;
</span><span class="cx"> 
</span><del>-        if (!document()-&gt;securityOrigin()-&gt;canDisplay(url)) {
</del><ins>+        if (!document-&gt;securityOrigin()-&gt;canDisplay(url)) {
</ins><span class="cx">             FrameLoader::reportLocalLoadFailed(&amp;m_frame, url.string());
</span><span class="cx">             return false;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (!m_frame.loader().mixedContentChecker().canRunInsecureContent(document()-&gt;securityOrigin(), url))
</del><ins>+        if (!m_frame.loader().mixedContentChecker().canRunInsecureContent(document-&gt;securityOrigin(), url))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -204,11 +206,13 @@
</span><span class="cx">     if (url.isEmpty() &amp;&amp; mimeType.isEmpty())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    auto&amp; document = ownerElement.document();
+
</ins><span class="cx">     URL completedURL;
</span><span class="cx">     if (!url.isEmpty())
</span><span class="cx">         completedURL = completeURL(url);
</span><span class="cx"> 
</span><del>-    document()-&gt;contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(completedURL, ContentSecurityPolicy::InsecureRequestType::Load);
</del><ins>+    document.contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(completedURL, ContentSecurityPolicy::InsecureRequestType::Load);
</ins><span class="cx"> 
</span><span class="cx">     bool hasFallbackContent = is&lt;HTMLObjectElement&gt;(ownerElement) &amp;&amp; downcast&lt;HTMLObjectElement&gt;(ownerElement).hasFallbackContent();
</span><span class="cx"> 
</span><span class="lines">@@ -215,7 +219,7 @@
</span><span class="cx">     bool useFallback;
</span><span class="cx">     if (shouldUsePlugin(completedURL, mimeType, hasFallbackContent, useFallback)) {
</span><span class="cx">         bool success = requestPlugin(ownerElement, completedURL, mimeType, paramNames, paramValues, useFallback);
</span><del>-        logPluginRequest(document()-&gt;page(), mimeType, completedURL, success);
</del><ins>+        logPluginRequest(document.page(), mimeType, completedURL, success);
</ins><span class="cx">         return success;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -225,7 +229,7 @@
</span><span class="cx">     return loadOrRedirectSubframe(ownerElement, completedURL, frameName, LockHistory::Yes, LockBackForwardList::Yes);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Widget&gt; SubframeLoader::createJavaAppletWidget(const IntSize&amp; size, HTMLAppletElement&amp; element, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</del><ins>+RefPtr&lt;Widget&gt; SubframeLoader::createJavaAppletWidget(const IntSize&amp; size, HTMLAppletElement&amp; element, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</ins><span class="cx"> {
</span><span class="cx">     String baseURLString;
</span><span class="cx">     String codeBaseURLString;
</span><span class="lines">@@ -254,14 +258,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (baseURLString.isEmpty())
</span><del>-        baseURLString = m_frame.document()-&gt;baseURL().string();
</del><ins>+        baseURLString = element.document().baseURL().string();
</ins><span class="cx">     URL baseURL = completeURL(baseURLString);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Widget&gt; widget;
</span><span class="cx">     if (allowPlugins())
</span><del>-        widget = m_frame.loader().client().createJavaAppletWidget(size, &amp;element, baseURL, paramNames, paramValues);
</del><ins>+        widget = m_frame.loader().client().createJavaAppletWidget(size, element, baseURL, paramNames, paramValues);
</ins><span class="cx"> 
</span><del>-    logPluginRequest(document()-&gt;page(), element.serviceType(), String(), widget);
</del><ins>+    logPluginRequest(m_frame.page(), element.serviceType(), String(), widget);
</ins><span class="cx"> 
</span><span class="cx">     if (!widget) {
</span><span class="cx">         RenderEmbeddedObject* renderer = element.renderEmbeddedObject();
</span><span class="lines">@@ -275,16 +279,18 @@
</span><span class="cx">     return widget;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Frame* SubframeLoader::loadOrRedirectSubframe(HTMLFrameOwnerElement&amp; ownerElement, const URL&amp; requestUrl, const AtomicString&amp; frameName, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</del><ins>+Frame* SubframeLoader::loadOrRedirectSubframe(HTMLFrameOwnerElement&amp; ownerElement, const URL&amp; requestURL, const AtomicString&amp; frameName, LockHistory lockHistory, LockBackForwardList lockBackForwardList)
</ins><span class="cx"> {
</span><del>-    URL url = requestUrl;
-    ownerElement.document().contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(url, ContentSecurityPolicy::InsecureRequestType::Load);
</del><ins>+    auto&amp; initiatingDocument = ownerElement.document();
</ins><span class="cx"> 
</span><del>-    Frame* frame = ownerElement.contentFrame();
</del><ins>+    URL upgradedRequestURL = requestURL;
+    initiatingDocument.contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(upgradedRequestURL, ContentSecurityPolicy::InsecureRequestType::Load);
+
+    auto* frame = ownerElement.contentFrame();
</ins><span class="cx">     if (frame)
</span><del>-        frame-&gt;navigationScheduler().scheduleLocationChange(m_frame.document(), m_frame.document()-&gt;securityOrigin(), url, m_frame.loader().outgoingReferrer(), lockHistory, lockBackForwardList);
</del><ins>+        frame-&gt;navigationScheduler().scheduleLocationChange(initiatingDocument, initiatingDocument.securityOrigin(), upgradedRequestURL, m_frame.loader().outgoingReferrer(), lockHistory, lockBackForwardList);
</ins><span class="cx">     else
</span><del>-        frame = loadSubframe(ownerElement, url, frameName, m_frame.loader().outgoingReferrer());
</del><ins>+        frame = loadSubframe(ownerElement, upgradedRequestURL, frameName, m_frame.loader().outgoingReferrer());
</ins><span class="cx"> 
</span><span class="cx">     if (!frame)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -301,13 +307,15 @@
</span><span class="cx">     int marginWidth = -1;
</span><span class="cx">     int marginHeight = -1;
</span><span class="cx">     if (is&lt;HTMLFrameElementBase&gt;(ownerElement)) {
</span><del>-        HTMLFrameElementBase&amp; frameElementBase = downcast&lt;HTMLFrameElementBase&gt;(ownerElement);
</del><ins>+        auto&amp; frameElementBase = downcast&lt;HTMLFrameElementBase&gt;(ownerElement);
</ins><span class="cx">         allowsScrolling = frameElementBase.scrollingMode() != ScrollbarAlwaysOff;
</span><span class="cx">         marginWidth = frameElementBase.marginWidth();
</span><span class="cx">         marginHeight = frameElementBase.marginHeight();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!ownerElement.document().securityOrigin()-&gt;canDisplay(url)) {
</del><ins>+    auto document = makeRef(ownerElement.document());
+
+    if (!document-&gt;securityOrigin()-&gt;canDisplay(url)) {
</ins><span class="cx">         FrameLoader::reportLocalLoadFailed(&amp;m_frame, url.string());
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="lines">@@ -315,20 +323,20 @@
</span><span class="cx">     if (!SubframeLoadingDisabler::canLoadFrame(ownerElement))
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    String referrerToUse = SecurityPolicy::generateReferrerHeader(ownerElement.document().referrerPolicy(), url, referrer);
</del><ins>+    String referrerToUse = SecurityPolicy::generateReferrerHeader(document-&gt;referrerPolicy(), url, referrer);
</ins><span class="cx"> 
</span><span class="cx">     // Prevent initial empty document load from triggering load events.
</span><del>-    m_frame.document()-&gt;incrementLoadEventDelayCount();
</del><ins>+    document-&gt;incrementLoadEventDelayCount();
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;Frame&gt; frame = m_frame.loader().client().createFrame(url, name, &amp;ownerElement, referrerToUse, allowsScrolling, marginWidth, marginHeight);
</del><ins>+    auto frame = m_frame.loader().client().createFrame(url, name, ownerElement, referrerToUse, allowsScrolling, marginWidth, marginHeight);
</ins><span class="cx"> 
</span><del>-    m_frame.document()-&gt;decrementLoadEventDelayCount();
</del><ins>+    document-&gt;decrementLoadEventDelayCount();
</ins><span class="cx"> 
</span><span class="cx">     if (!frame)  {
</span><span class="cx">         m_frame.loader().checkCallImplicitClose();
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     // All new frames will have m_isComplete set to true at this point due to synchronously loading
</span><span class="cx">     // an empty document in FrameLoader::init(). But many frames will now be starting an
</span><span class="cx">     // asynchronous load of url, so we set m_isComplete to false and then check if the load is
</span><span class="lines">@@ -338,12 +346,12 @@
</span><span class="cx">     frame-&gt;loader().started();
</span><span class="cx">    
</span><span class="cx">     auto* renderer = ownerElement.renderer();
</span><del>-    FrameView* view = frame-&gt;view();
</del><ins>+    auto* view = frame-&gt;view();
</ins><span class="cx">     if (is&lt;RenderWidget&gt;(renderer) &amp;&amp; view)
</span><span class="cx">         downcast&lt;RenderWidget&gt;(*renderer).setWidget(view);
</span><del>-    
</del><ins>+
</ins><span class="cx">     m_frame.loader().checkCallImplicitClose();
</span><del>-    
</del><ins>+
</ins><span class="cx">     // Some loads are performed synchronously (e.g., about:blank and loads
</span><span class="cx">     // cancelled by returning a null ResourceRequest from requestFromDelegate).
</span><span class="cx">     // In these cases, the synchronous load would have finished
</span><span class="lines">@@ -379,17 +387,14 @@
</span><span class="cx">     return objectType == ObjectContentType::None || objectType == ObjectContentType::PlugIn;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Document* SubframeLoader::document() const
-{
-    return m_frame.document();
-}
-
</del><span class="cx"> bool SubframeLoader::loadPlugin(HTMLPlugInImageElement&amp; pluginElement, const URL&amp; url, const String&amp; mimeType, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, bool useFallback)
</span><span class="cx"> {
</span><span class="cx">     if (useFallback)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RenderEmbeddedObject* renderer = pluginElement.renderEmbeddedObject();
</del><ins>+    auto&amp; document = pluginElement.document();
+    auto* renderer = pluginElement.renderEmbeddedObject();
+
</ins><span class="cx">     // FIXME: This code should not depend on renderer!
</span><span class="cx">     if (!renderer)
</span><span class="cx">         return false;
</span><span class="lines">@@ -397,17 +402,19 @@
</span><span class="cx">     pluginElement.subframeLoaderWillCreatePlugIn(url);
</span><span class="cx"> 
</span><span class="cx">     IntSize contentSize = roundedIntSize(LayoutSize(renderer-&gt;contentWidth(), renderer-&gt;contentHeight()));
</span><del>-    bool loadManually = is&lt;PluginDocument&gt;(*document()) &amp;&amp; !m_containsPlugins &amp;&amp; downcast&lt;PluginDocument&gt;(*document()).shouldLoadPluginManually();
</del><ins>+    bool loadManually = is&lt;PluginDocument&gt;(document) &amp;&amp; !m_containsPlugins &amp;&amp; downcast&lt;PluginDocument&gt;(document).shouldLoadPluginManually();
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     // On iOS, we only tell the plugin to be in full page mode if the containing plugin document is the top level document.
</span><del>-    if (document()-&gt;ownerElement())
</del><ins>+    if (document.ownerElement())
</ins><span class="cx">         loadManually = false;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    WeakPtr&lt;RenderWidget&gt; weakRenderer = renderer-&gt;createWeakPtr();
-    // createPlugin *may* cause this renderer to disappear from underneath.
-    RefPtr&lt;Widget&gt; widget = m_frame.loader().client().createPlugin(contentSize, &amp;pluginElement, url, paramNames, paramValues, mimeType, loadManually);
</del><ins>+    auto weakRenderer = renderer-&gt;createWeakPtr();
+
+    auto widget = m_frame.loader().client().createPlugin(contentSize, pluginElement, url, paramNames, paramValues, mimeType, loadManually);
+
+    // The call to createPlugin *may* cause this renderer to disappear from underneath.
</ins><span class="cx">     if (!weakRenderer)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -431,9 +438,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool SubframeLoader::shouldConvertInvalidURLsToBlank() const
</span><span class="cx"> {
</span><del>-    if (Settings* settings = document() ? document()-&gt;settings() : nullptr)
-        return settings-&gt;shouldConvertInvalidURLsToBlank();
-    return true;
</del><ins>+    return m_frame.settings().shouldConvertInvalidURLsToBlank();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubframeLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubframeLoader.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubframeLoader.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/SubframeLoader.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     bool requestObject(HTMLPlugInImageElement&amp;, const String&amp; url, const AtomicString&amp; frameName,
</span><span class="cx">         const String&amp; serviceType, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement&amp;, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues);
</del><ins>+    RefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement&amp;, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT bool allowPlugins();
</span><span class="cx"> 
</span><span class="lines">@@ -78,14 +78,12 @@
</span><span class="cx">     bool shouldUsePlugin(const URL&amp;, const String&amp; mimeType, bool hasFallback, bool&amp; useFallback);
</span><span class="cx">     bool pluginIsLoadable(const URL&amp;, const String&amp; mimeType);
</span><span class="cx"> 
</span><del>-    Document* document() const;
</del><ins>+    URL completeURL(const String&amp;) const;
</ins><span class="cx"> 
</span><span class="cx">     bool shouldConvertInvalidURLsToBlank() const;
</span><span class="cx"> 
</span><span class="cx">     bool m_containsPlugins;
</span><span class="cx">     Frame&amp; m_frame;
</span><del>-
-    URL completeURL(const String&amp;) const;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubresourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubresourceLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -256,6 +256,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><ins>+
</ins><span class="cx"> bool SubresourceLoader::shouldCreateQuickLookHandleForResponse(const ResourceResponse&amp; response) const
</span><span class="cx"> {
</span><span class="cx">     if (m_resource-&gt;type() != CachedResource::MainResource)
</span><span class="lines">@@ -266,6 +267,7 @@
</span><span class="cx"> 
</span><span class="cx">     return QuickLookHandle::shouldCreateForMIMEType(response.mimeType());
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void SubresourceLoader::didReceiveResponse(const ResourceResponse&amp; response)
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -42,10 +42,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ApplicationCache::ApplicationCache()
</span><del>-    : m_group(nullptr)
-    , m_manifest(nullptr)
-    , m_estimatedSizeInStorage(0)
-    , m_storageID(0)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -52,7 +48,7 @@
</span><span class="cx"> ApplicationCache::~ApplicationCache()
</span><span class="cx"> {
</span><span class="cx">     if (m_group)
</span><del>-        m_group-&gt;cacheDestroyed(this);
</del><ins>+        m_group-&gt;cacheDestroyed(*this);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void ApplicationCache::setGroup(ApplicationCacheGroup* group)
</span><span class="lines">@@ -63,57 +59,39 @@
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCache::isComplete()
</span><span class="cx"> {
</span><del>-    return m_group &amp;&amp; m_group-&gt;cacheIsComplete(this);
</del><ins>+    return m_group &amp;&amp; m_group-&gt;cacheIsComplete(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCache::setManifestResource(PassRefPtr&lt;ApplicationCacheResource&gt; manifest)
</del><ins>+void ApplicationCache::setManifestResource(Ref&lt;ApplicationCacheResource&gt;&amp;&amp; manifest)
</ins><span class="cx"> {
</span><del>-    ASSERT(manifest);
</del><span class="cx">     ASSERT(!m_manifest);
</span><span class="cx">     ASSERT(manifest-&gt;type() &amp; ApplicationCacheResource::Manifest);
</span><del>-    
-    m_manifest = manifest.get();
-    
-    addResource(manifest);
</del><ins>+
+    m_manifest = manifest.ptr();
+
+    addResource(WTFMove(manifest));
</ins><span class="cx"> }
</span><span class="cx">     
</span><del>-void ApplicationCache::addResource(PassRefPtr&lt;ApplicationCacheResource&gt; resource)
</del><ins>+void ApplicationCache::addResource(Ref&lt;ApplicationCacheResource&gt;&amp;&amp; resource)
</ins><span class="cx"> {
</span><del>-    ASSERT(resource);
-    
-    const String&amp; url = resource-&gt;url();
-    
</del><ins>+    auto&amp; url = resource-&gt;url();
+
+    ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
</ins><span class="cx">     ASSERT(!m_resources.contains(url));
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (m_storageID) {
</span><span class="cx">         ASSERT(!resource-&gt;storageID());
</span><span class="cx">         ASSERT(resource-&gt;type() &amp; ApplicationCacheResource::Master);
</span><del>-        
</del><ins>+
</ins><span class="cx">         // Add the resource to the storage.
</span><del>-        m_group-&gt;storage().store(resource.get(), this);
</del><ins>+        m_group-&gt;storage().store(resource.ptr(), this);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_estimatedSizeInStorage += resource-&gt;estimatedSizeInStorage();
</span><span class="cx"> 
</span><del>-    m_resources.set(url, resource);
</del><ins>+    m_resources.set(url, WTFMove(resource));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-unsigned ApplicationCache::removeResource(const String&amp; url)
-{
-    HashMap&lt;String, RefPtr&lt;ApplicationCacheResource&gt;&gt;::iterator it = m_resources.find(url);
-    if (it == m_resources.end())
-        return 0;
-
-    // The resource exists, get its type so we can return it.
-    unsigned type = it-&gt;value-&gt;type();
-
-    m_estimatedSizeInStorage -= it-&gt;value-&gt;estimatedSizeInStorage();
-
-    m_resources.remove(it);
-
-    return type;
-}    
-    
</del><span class="cx"> ApplicationCacheResource* ApplicationCache::resourceForURL(const String&amp; url)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
</span><span class="lines">@@ -132,9 +110,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     URL url(request.url());
</span><del>-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
-
</del><ins>+    url.removeFragmentIdentifier();
</ins><span class="cx">     return resourceForURL(url);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCache.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCache.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCache.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -26,32 +26,28 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ApplicationCacheGroup;
</span><span class="cx"> class ApplicationCacheResource;
</span><ins>+class ResourceRequest;
</ins><span class="cx"> class URL;
</span><del>-class ResourceRequest;
</del><span class="cx"> 
</span><del>-typedef Vector&lt;std::pair&lt;URL, URL&gt;&gt; FallbackURLVector;
</del><ins>+using FallbackURLVector = Vector&lt;std::pair&lt;URL, URL&gt;&gt;;
</ins><span class="cx"> 
</span><span class="cx"> class ApplicationCache : public RefCounted&lt;ApplicationCache&gt; {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;ApplicationCache&gt; create() { return adoptRef(*new ApplicationCache); }
</span><del>-    
</del><ins>+
</ins><span class="cx">     ~ApplicationCache();
</span><span class="cx"> 
</span><del>-    void addResource(PassRefPtr&lt;ApplicationCacheResource&gt; resource);
-    unsigned removeResource(const String&amp; url);
-    
-    void setManifestResource(PassRefPtr&lt;ApplicationCacheResource&gt; manifest);
</del><ins>+    void addResource(Ref&lt;ApplicationCacheResource&gt;&amp;&amp;);
+
+    void setManifestResource(Ref&lt;ApplicationCacheResource&gt;&amp;&amp;);
</ins><span class="cx">     ApplicationCacheResource* manifestResource() const { return m_manifest; }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void setGroup(ApplicationCacheGroup*);
</span><span class="cx">     ApplicationCacheGroup* group() const { return m_group; }
</span><span class="cx"> 
</span><span class="lines">@@ -69,18 +65,18 @@
</span><span class="cx">     void setFallbackURLs(const FallbackURLVector&amp;);
</span><span class="cx">     const FallbackURLVector&amp; fallbackURLs() const { return m_fallbackURLs; }
</span><span class="cx">     bool urlMatchesFallbackNamespace(const URL&amp;, URL* fallbackURL = nullptr);
</span><del>-    
</del><ins>+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     void dump();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    typedef HashMap&lt;String, RefPtr&lt;ApplicationCacheResource&gt;&gt; ResourceMap;
</del><ins>+    using ResourceMap = HashMap&lt;String, RefPtr&lt;ApplicationCacheResource&gt;&gt;;
</ins><span class="cx">     const ResourceMap&amp; resources() const { return m_resources; }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void setStorageID(unsigned storageID) { m_storageID = storageID; }
</span><span class="cx">     unsigned storageID() const { return m_storageID; }
</span><span class="cx">     void clearStorageID();
</span><del>-    
</del><ins>+
</ins><span class="cx">     static bool requestIsHTTPOrHTTPSGet(const ResourceRequest&amp;);
</span><span class="cx"> 
</span><span class="cx">     int64_t estimatedSizeInStorage() const { return m_estimatedSizeInStorage; }
</span><span class="lines">@@ -87,21 +83,20 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     ApplicationCache();
</span><del>-    
-    ApplicationCacheGroup* m_group;
</del><ins>+
+    ApplicationCacheGroup* m_group { nullptr };
</ins><span class="cx">     ResourceMap m_resources;
</span><del>-    ApplicationCacheResource* m_manifest;
</del><ins>+    ApplicationCacheResource* m_manifest { nullptr };
</ins><span class="cx"> 
</span><del>-    bool m_allowAllNetworkRequests;
</del><ins>+    bool m_allowAllNetworkRequests { false };
</ins><span class="cx">     Vector&lt;URL&gt; m_onlineWhitelist;
</span><span class="cx">     FallbackURLVector m_fallbackURLs;
</span><span class="cx"> 
</span><span class="cx">     // The total size of the resources belonging to this Application Cache instance.
</span><del>-    // This is an estimation of the size this Application Cache occupies in the
-    // database file.
-    int64_t m_estimatedSizeInStorage;
</del><ins>+    // This is an estimation of the size this Application Cache occupies in the database file.
+    int64_t m_estimatedSizeInStorage { 0 };
</ins><span class="cx"> 
</span><del>-    unsigned m_storageID;
</del><ins>+    unsigned m_storageID { 0 };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheGroupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;ChromeClient.h&quot;
</span><span class="cx"> #include &quot;DOMApplicationCache.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><ins>+#include &quot;EventNames.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="lines">@@ -54,17 +55,7 @@
</span><span class="cx">     : m_storage(WTFMove(storage))
</span><span class="cx">     , m_manifestURL(manifestURL)
</span><span class="cx">     , m_origin(SecurityOrigin::create(manifestURL))
</span><del>-    , m_updateStatus(Idle)
-    , m_downloadingPendingMasterResourceLoadersCount(0)
-    , m_progressTotal(0)
-    , m_progressDone(0)
-    , m_frame(nullptr)
-    , m_storageID(0)
-    , m_isObsolete(false)
-    , m_completionType(None)
-    , m_calledReachedMaxAppCacheSize(false)
</del><span class="cx">     , m_availableSpaceInQuota(ApplicationCacheStorage::unknownQuota())
</span><del>-    , m_originQuotaExceededPreviously(false)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -72,10 +63,10 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_newestCache);
</span><span class="cx">     ASSERT(m_caches.isEmpty());
</span><del>-    
</del><ins>+
</ins><span class="cx">     stopLoading();
</span><span class="cx"> 
</span><del>-    m_storage-&gt;cacheGroupDestroyed(this);
</del><ins>+    m_storage-&gt;cacheGroupDestroyed(*this);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> ApplicationCache* ApplicationCacheGroup::cacheForMainRequest(const ResourceRequest&amp; request, DocumentLoader* documentLoader)
</span><span class="lines">@@ -84,21 +75,20 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     URL url(request.url());
</span><del>-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
</del><ins>+    url.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><span class="cx">     auto* page = documentLoader-&gt;frame() ? documentLoader-&gt;frame()-&gt;page() : nullptr;
</span><span class="cx">     if (!page || page-&gt;usesEphemeralSession())
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    if (ApplicationCacheGroup* group = page-&gt;applicationCacheStorage().cacheGroupForURL(url)) {
-        ASSERT(group-&gt;newestCache());
-        ASSERT(!group-&gt;isObsolete());
-        
-        return group-&gt;newestCache();
-    }
-    
-    return nullptr;
</del><ins>+    auto* group = page-&gt;applicationCacheStorage().cacheGroupForURL(url);
+    if (!group)
+        return nullptr;
+
+    ASSERT(group-&gt;newestCache());
+    ASSERT(!group-&gt;isObsolete());
+
+    return group-&gt;newestCache();
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> ApplicationCache* ApplicationCacheGroup::fallbackCacheForMainRequest(const ResourceRequest&amp; request, DocumentLoader* documentLoader)
</span><span class="lines">@@ -106,81 +96,87 @@
</span><span class="cx">     if (!ApplicationCache::requestIsHTTPOrHTTPSGet(request))
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    URL url(request.url());
-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
</del><ins>+    auto* frame = documentLoader-&gt;frame();
+    if (!frame)
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    auto* page = documentLoader-&gt;frame() ? documentLoader-&gt;frame()-&gt;page() : nullptr;
</del><ins>+    auto* page = frame-&gt;page();
</ins><span class="cx">     if (!page)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    if (ApplicationCacheGroup* group = page-&gt;applicationCacheStorage().fallbackCacheGroupForURL(url)) {
-        ASSERT(group-&gt;newestCache());
-        ASSERT(!group-&gt;isObsolete());
</del><ins>+    URL url(request.url());
+    url.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><del>-        return group-&gt;newestCache();
-    }
-    
-    return nullptr;
</del><ins>+    auto* group = page-&gt;applicationCacheStorage().fallbackCacheGroupForURL(url);
+    if (!group)
+        return nullptr;
+
+    ASSERT(group-&gt;newestCache());
+    ASSERT(!group-&gt;isObsolete());
+
+    return group-&gt;newestCache();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::selectCache(Frame* frame, const URL&amp; passedManifestURL)
</del><ins>+void ApplicationCacheGroup::selectCache(Frame&amp; frame, const URL&amp; passedManifestURL)
</ins><span class="cx"> {
</span><del>-    ASSERT(frame &amp;&amp; frame-&gt;page());
-    
-    if (!frame-&gt;settings().offlineWebApplicationCacheEnabled())
</del><ins>+    ASSERT(frame.document());
+    ASSERT(frame.page());
+    ASSERT(frame.loader().documentLoader());
+
+    if (!frame.settings().offlineWebApplicationCacheEnabled())
</ins><span class="cx">         return;
</span><del>-    
-    DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
-    ASSERT(!documentLoader-&gt;applicationCacheHost()-&gt;applicationCache());
</del><span class="cx"> 
</span><ins>+    auto&amp; documentLoader = *frame.loader().documentLoader();
+    ASSERT(!documentLoader.applicationCacheHost().applicationCache());
+
</ins><span class="cx">     if (passedManifestURL.isNull()) {
</span><del>-        selectCacheWithoutManifestURL(frame);        
</del><ins>+        selectCacheWithoutManifestURL(frame);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Don't access anything on disk if private browsing is enabled.
</span><del>-    if (frame-&gt;page()-&gt;usesEphemeralSession() || !frame-&gt;document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame-&gt;tree().top().document()-&gt;securityOrigin())) {
-        postListenerTask(ApplicationCacheHost::CHECKING_EVENT, documentLoader);
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, documentLoader);
</del><ins>+    if (frame.page()-&gt;usesEphemeralSession() || !frame.document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame.tree().top().document()-&gt;securityOrigin())) {
+        postListenerTask(eventNames().checkingEvent, documentLoader);
+        postListenerTask(eventNames().errorEvent, documentLoader);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     URL manifestURL(passedManifestURL);
</span><del>-    if (manifestURL.hasFragmentIdentifier())
-        manifestURL.removeFragmentIdentifier();
</del><ins>+    manifestURL.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><del>-    ApplicationCache* mainResourceCache = documentLoader-&gt;applicationCacheHost()-&gt;mainResourceApplicationCache();
</del><ins>+    auto* mainResourceCache = documentLoader.applicationCacheHost().mainResourceApplicationCache();
</ins><span class="cx">     
</span><span class="cx">     if (mainResourceCache) {
</span><ins>+        ASSERT(mainResourceCache-&gt;group());
</ins><span class="cx">         if (manifestURL == mainResourceCache-&gt;group()-&gt;m_manifestURL) {
</span><span class="cx">             // The cache may have gotten obsoleted after we've loaded from it, but before we parsed the document and saw cache manifest.
</span><span class="cx">             if (mainResourceCache-&gt;group()-&gt;isObsolete())
</span><span class="cx">                 return;
</span><del>-            mainResourceCache-&gt;group()-&gt;associateDocumentLoaderWithCache(documentLoader, mainResourceCache);
</del><ins>+            mainResourceCache-&gt;group()-&gt;associateDocumentLoaderWithCache(&amp;documentLoader, mainResourceCache);
</ins><span class="cx">             mainResourceCache-&gt;group()-&gt;update(frame, ApplicationCacheUpdateWithBrowsingContext);
</span><span class="cx">         } else {
</span><span class="cx">             // The main resource was loaded from cache, so the cache must have an entry for it. Mark it as foreign.
</span><del>-            URL resourceURL(documentLoader-&gt;responseURL());
-            if (resourceURL.hasFragmentIdentifier())
-                resourceURL.removeFragmentIdentifier();
-            ApplicationCacheResource* resource = mainResourceCache-&gt;resourceForURL(resourceURL);
-            bool inStorage = resource-&gt;storageID();
-            resource-&gt;addType(ApplicationCacheResource::Foreign);
</del><ins>+            URL resourceURL { documentLoader.responseURL() };
+            resourceURL.removeFragmentIdentifier();
+
+            ASSERT(mainResourceCache-&gt;resourceForURL(resourceURL));
+            auto&amp; resource = *mainResourceCache-&gt;resourceForURL(resourceURL);
+
+            bool inStorage = resource.storageID();
+            resource.addType(ApplicationCacheResource::Foreign);
</ins><span class="cx">             if (inStorage)
</span><del>-                frame-&gt;page()-&gt;applicationCacheStorage().storeUpdatedType(resource, mainResourceCache);
</del><ins>+                frame.page()-&gt;applicationCacheStorage().storeUpdatedType(&amp;resource, mainResourceCache);
</ins><span class="cx"> 
</span><span class="cx">             // Restart the current navigation from the top of the navigation algorithm, undoing any changes that were made
</span><span class="cx">             // as part of the initial load.
</span><span class="cx">             // The navigation will not result in the same resource being loaded, because &quot;foreign&quot; entries are never picked during navigation.
</span><del>-            frame-&gt;navigationScheduler().scheduleLocationChange(frame-&gt;document(), frame-&gt;document()-&gt;securityOrigin(), documentLoader-&gt;url(), frame-&gt;loader().referrer());
</del><ins>+            frame.navigationScheduler().scheduleLocationChange(*frame.document(), frame.document()-&gt;securityOrigin(), documentLoader.url(), frame.loader().referrer());
</ins><span class="cx">         }
</span><del>-        
</del><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     // The resource was loaded from the network, check if it is a HTTP/HTTPS GET.    
</span><del>-    const ResourceRequest&amp; request = frame-&gt;loader().activeDocumentLoader()-&gt;request();
</del><ins>+    auto&amp; request = frame.loader().activeDocumentLoader()-&gt;request();
</ins><span class="cx"> 
</span><span class="cx">     if (!ApplicationCache::requestIsHTTPOrHTTPSGet(request))
</span><span class="cx">         return;
</span><span class="lines">@@ -189,46 +185,48 @@
</span><span class="cx">     if (!protocolHostAndPortAreEqual(manifestURL, request.url()))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ApplicationCacheGroup* group = frame-&gt;page()-&gt;applicationCacheStorage().findOrCreateCacheGroup(manifestURL);
</del><ins>+    auto&amp; group = *frame.page()-&gt;applicationCacheStorage().findOrCreateCacheGroup(manifestURL);
</ins><span class="cx"> 
</span><del>-    documentLoader-&gt;applicationCacheHost()-&gt;setCandidateApplicationCacheGroup(group);
-    group-&gt;m_pendingMasterResourceLoaders.add(documentLoader);
-    group-&gt;m_downloadingPendingMasterResourceLoadersCount++;
</del><ins>+    documentLoader.applicationCacheHost().setCandidateApplicationCacheGroup(&amp;group);
+    group.m_pendingMasterResourceLoaders.add(&amp;documentLoader);
+    group.m_downloadingPendingMasterResourceLoadersCount++;
</ins><span class="cx"> 
</span><del>-    ASSERT(!group-&gt;m_cacheBeingUpdated || group-&gt;m_updateStatus != Idle);
-    group-&gt;update(frame, ApplicationCacheUpdateWithBrowsingContext);
</del><ins>+    ASSERT(!group.m_cacheBeingUpdated || group.m_updateStatus != Idle);
+    group.update(frame, ApplicationCacheUpdateWithBrowsingContext);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::selectCacheWithoutManifestURL(Frame* frame)
</del><ins>+void ApplicationCacheGroup::selectCacheWithoutManifestURL(Frame&amp; frame)
</ins><span class="cx"> {
</span><del>-    if (!frame-&gt;settings().offlineWebApplicationCacheEnabled())
</del><ins>+    if (!frame.settings().offlineWebApplicationCacheEnabled())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
-    ASSERT(!documentLoader-&gt;applicationCacheHost()-&gt;applicationCache());
</del><ins>+    ASSERT(frame.document());
+    ASSERT(frame.page());
+    ASSERT(frame.loader().documentLoader());
+    auto&amp; documentLoader = *frame.loader().documentLoader();
+    ASSERT(!documentLoader.applicationCacheHost().applicationCache());
</ins><span class="cx"> 
</span><span class="cx">     // Don't access anything on disk if private browsing is enabled.
</span><del>-    if (frame-&gt;page()-&gt;usesEphemeralSession() || !frame-&gt;document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame-&gt;tree().top().document()-&gt;securityOrigin())) {
-        postListenerTask(ApplicationCacheHost::CHECKING_EVENT, documentLoader);
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, documentLoader);
</del><ins>+    if (frame.page()-&gt;usesEphemeralSession() || !frame.document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame.tree().top().document()-&gt;securityOrigin())) {
+        postListenerTask(eventNames().checkingEvent, documentLoader);
+        postListenerTask(eventNames().errorEvent, documentLoader);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ApplicationCache* mainResourceCache = documentLoader-&gt;applicationCacheHost()-&gt;mainResourceApplicationCache();
-
-    if (mainResourceCache) {
-        mainResourceCache-&gt;group()-&gt;associateDocumentLoaderWithCache(documentLoader, mainResourceCache);
-        mainResourceCache-&gt;group()-&gt;update(frame, ApplicationCacheUpdateWithBrowsingContext);
</del><ins>+    if (auto* mainResourceCache = documentLoader.applicationCacheHost().mainResourceApplicationCache()) {
+        ASSERT(mainResourceCache-&gt;group());
+        auto&amp; group = *mainResourceCache-&gt;group();
+        group.associateDocumentLoaderWithCache(&amp;documentLoader, mainResourceCache);
+        group.update(frame, ApplicationCacheUpdateWithBrowsingContext);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::finishedLoadingMainResource(DocumentLoader* loader)
</del><ins>+void ApplicationCacheGroup::finishedLoadingMainResource(DocumentLoader&amp; loader)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_pendingMasterResourceLoaders.contains(loader));
</del><ins>+    ASSERT(m_pendingMasterResourceLoaders.contains(&amp;loader));
</ins><span class="cx">     ASSERT(m_completionType == None || m_pendingEntries.isEmpty());
</span><del>-    URL url = loader-&gt;url();
-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
</del><ins>+    URL url = loader.url();
+    url.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><span class="cx">     switch (m_completionType) {
</span><span class="cx">     case None:
</span><span class="lines">@@ -236,34 +234,32 @@
</span><span class="cx">         return;
</span><span class="cx">     case NoUpdate:
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated);
</span><del>-        associateDocumentLoaderWithCache(loader, m_newestCache.get());
-
-        if (ApplicationCacheResource* resource = m_newestCache-&gt;resourceForURL(url)) {
</del><ins>+        associateDocumentLoaderWithCache(&amp;loader, m_newestCache.get());
+        if (auto* resource = m_newestCache-&gt;resourceForURL(url)) {
</ins><span class="cx">             if (!(resource-&gt;type() &amp; ApplicationCacheResource::Master)) {
</span><span class="cx">                 resource-&gt;addType(ApplicationCacheResource::Master);
</span><span class="cx">                 ASSERT(!resource-&gt;storageID());
</span><span class="cx">             }
</span><span class="cx">         } else
</span><del>-            m_newestCache-&gt;addResource(ApplicationCacheResource::create(url, loader-&gt;response(), ApplicationCacheResource::Master, loader-&gt;mainResourceData()));
</del><ins>+            m_newestCache-&gt;addResource(ApplicationCacheResource::create(url, loader.response(), ApplicationCacheResource::Master, loader.mainResourceData()));
</ins><span class="cx">         break;
</span><span class="cx">     case Failure:
</span><span class="cx">         // Cache update has been a failure, so there is no reason to keep the document associated with the incomplete cache
</span><span class="cx">         // (its main resource was not cached yet, so it is likely that the application changed significantly server-side).
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated); // Already cleared out by stopLoading().
</span><del>-        loader-&gt;applicationCacheHost()-&gt;setApplicationCache(nullptr); // Will unset candidate, too.
-        m_associatedDocumentLoaders.remove(loader);
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, loader);
</del><ins>+        loader.applicationCacheHost().setApplicationCache(nullptr); // Will unset candidate, too.
+        m_associatedDocumentLoaders.remove(&amp;loader);
+        postListenerTask(eventNames().errorEvent, loader);
</ins><span class="cx">         break;
</span><span class="cx">     case Completed:
</span><del>-        ASSERT(m_associatedDocumentLoaders.contains(loader));
-
-        if (ApplicationCacheResource* resource = m_cacheBeingUpdated-&gt;resourceForURL(url)) {
</del><ins>+        ASSERT(m_associatedDocumentLoaders.contains(&amp;loader));
+        if (auto* resource = m_cacheBeingUpdated-&gt;resourceForURL(url)) {
</ins><span class="cx">             if (!(resource-&gt;type() &amp; ApplicationCacheResource::Master)) {
</span><span class="cx">                 resource-&gt;addType(ApplicationCacheResource::Master);
</span><span class="cx">                 ASSERT(!resource-&gt;storageID());
</span><span class="cx">             }
</span><span class="cx">         } else
</span><del>-            m_cacheBeingUpdated-&gt;addResource(ApplicationCacheResource::create(url, loader-&gt;response(), ApplicationCacheResource::Master, loader-&gt;mainResourceData()));
</del><ins>+            m_cacheBeingUpdated-&gt;addResource(ApplicationCacheResource::create(url, loader.response(), ApplicationCacheResource::Master, loader.mainResourceData()));
</ins><span class="cx">         // The &quot;cached&quot; event will be posted to all associated documents once update is complete.
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="lines">@@ -273,9 +269,9 @@
</span><span class="cx">     checkIfLoadIsComplete();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::failedLoadingMainResource(DocumentLoader* loader)
</del><ins>+void ApplicationCacheGroup::failedLoadingMainResource(DocumentLoader&amp; loader)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_pendingMasterResourceLoaders.contains(loader));
</del><ins>+    ASSERT(m_pendingMasterResourceLoaders.contains(&amp;loader));
</ins><span class="cx">     ASSERT(m_completionType == None || m_pendingEntries.isEmpty());
</span><span class="cx"> 
</span><span class="cx">     switch (m_completionType) {
</span><span class="lines">@@ -284,32 +280,27 @@
</span><span class="cx">         return;
</span><span class="cx">     case NoUpdate:
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated);
</span><del>-
</del><span class="cx">         // The manifest didn't change, and we have a relevant cache - but the main resource download failed mid-way, so it cannot be stored to the cache,
</span><span class="cx">         // and the loader does not get associated to it. If there are other main resources being downloaded for this cache group, they may still succeed.
</span><del>-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, loader);
-
</del><ins>+        postListenerTask(eventNames().errorEvent, loader);
</ins><span class="cx">         break;
</span><span class="cx">     case Failure:
</span><span class="cx">         // Cache update failed, too.
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated); // Already cleared out by stopLoading().
</span><del>-        ASSERT(!loader-&gt;applicationCacheHost()-&gt;applicationCache() || loader-&gt;applicationCacheHost()-&gt;applicationCache()-&gt;group() == this);
-
-        loader-&gt;applicationCacheHost()-&gt;setApplicationCache(nullptr); // Will unset candidate, too.
-        m_associatedDocumentLoaders.remove(loader);
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, loader);
</del><ins>+        ASSERT(!loader.applicationCacheHost().applicationCache() || loader.applicationCacheHost().applicationCache()-&gt;group() == this);
+        loader.applicationCacheHost().setApplicationCache(nullptr); // Will unset candidate, too.
+        m_associatedDocumentLoaders.remove(&amp;loader);
+        postListenerTask(eventNames().errorEvent, loader);
</ins><span class="cx">         break;
</span><span class="cx">     case Completed:
</span><span class="cx">         // The cache manifest didn't list this main resource, and all cache entries were already updated successfully - but the main resource failed to load,
</span><span class="cx">         // so it cannot be stored to the cache. If there are other main resources being downloaded for this cache group, they may still succeed.
</span><del>-        ASSERT(m_associatedDocumentLoaders.contains(loader));
-        ASSERT(loader-&gt;applicationCacheHost()-&gt;applicationCache() == m_cacheBeingUpdated);
-        ASSERT(!loader-&gt;applicationCacheHost()-&gt;candidateApplicationCacheGroup());
-        m_associatedDocumentLoaders.remove(loader);
-        loader-&gt;applicationCacheHost()-&gt;setApplicationCache(nullptr);
-
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, loader);
-
</del><ins>+        ASSERT(m_associatedDocumentLoaders.contains(&amp;loader));
+        ASSERT(loader.applicationCacheHost().applicationCache() == m_cacheBeingUpdated);
+        ASSERT(!loader.applicationCacheHost().candidateApplicationCacheGroup());
+        m_associatedDocumentLoaders.remove(&amp;loader);
+        loader.applicationCacheHost().setApplicationCache(nullptr);
+        postListenerTask(eventNames().errorEvent, loader);
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -346,12 +337,12 @@
</span><span class="cx">     m_pendingEntries.clear();
</span><span class="cx"> }    
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::disassociateDocumentLoader(DocumentLoader* loader)
</del><ins>+void ApplicationCacheGroup::disassociateDocumentLoader(DocumentLoader&amp; loader)
</ins><span class="cx"> {
</span><del>-    m_associatedDocumentLoaders.remove(loader);
-    m_pendingMasterResourceLoaders.remove(loader);
</del><ins>+    m_associatedDocumentLoaders.remove(&amp;loader);
+    m_pendingMasterResourceLoaders.remove(&amp;loader);
</ins><span class="cx"> 
</span><del>-    if (auto* host = loader-&gt;applicationCacheHost())
</del><ins>+    if (auto* host = loader.applicationCacheHostUnlessBeingDestroyed())
</ins><span class="cx">         host-&gt;setApplicationCache(nullptr); // Will set candidate group to null, too.
</span><span class="cx"> 
</span><span class="cx">     if (!m_associatedDocumentLoaders.isEmpty() || !m_pendingMasterResourceLoaders.isEmpty())
</span><span class="lines">@@ -372,9 +363,9 @@
</span><span class="cx">     m_newestCache = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::cacheDestroyed(ApplicationCache* cache)
</del><ins>+void ApplicationCacheGroup::cacheDestroyed(ApplicationCache&amp; cache)
</ins><span class="cx"> {
</span><del>-    if (m_caches.remove(cache) &amp;&amp; m_caches.isEmpty()) {
</del><ins>+    if (m_caches.remove(&amp;cache) &amp;&amp; m_caches.isEmpty()) {
</ins><span class="cx">         ASSERT(m_associatedDocumentLoaders.isEmpty());
</span><span class="cx">         ASSERT(m_pendingMasterResourceLoaders.isEmpty());
</span><span class="cx">         delete this;
</span><span class="lines">@@ -381,17 +372,17 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::stopLoadingInFrame(Frame* frame)
</del><ins>+void ApplicationCacheGroup::stopLoadingInFrame(Frame&amp; frame)
</ins><span class="cx"> {
</span><del>-    if (frame != m_frame)
</del><ins>+    if (&amp;frame != m_frame)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     cacheUpdateFailed();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::setNewestCache(PassRefPtr&lt;ApplicationCache&gt; newestCache)
</del><ins>+void ApplicationCacheGroup::setNewestCache(Ref&lt;ApplicationCache&gt;&amp;&amp; newestCache)
</ins><span class="cx"> {
</span><del>-    m_newestCache = newestCache;
</del><ins>+    m_newestCache = WTFMove(newestCache);
</ins><span class="cx"> 
</span><span class="cx">     m_caches.add(m_newestCache.get());
</span><span class="cx">     m_newestCache-&gt;setGroup(this);
</span><span class="lines">@@ -403,40 +394,43 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_isObsolete = true;
</span><del>-    m_storage-&gt;cacheGroupMadeObsolete(this);
</del><ins>+    m_storage-&gt;cacheGroupMadeObsolete(*this);
</ins><span class="cx">     ASSERT(!m_storageID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::update(Frame* frame, ApplicationCacheUpdateOption updateOption)
</del><ins>+void ApplicationCacheGroup::update(Frame&amp; frame, ApplicationCacheUpdateOption updateOption)
</ins><span class="cx"> {
</span><ins>+    ASSERT(frame.loader().documentLoader());
+    auto&amp; documentLoader = *frame.loader().documentLoader();
+
</ins><span class="cx">     if (m_updateStatus == Checking || m_updateStatus == Downloading) {
</span><span class="cx">         if (updateOption == ApplicationCacheUpdateWithBrowsingContext) {
</span><del>-            postListenerTask(ApplicationCacheHost::CHECKING_EVENT, frame-&gt;loader().documentLoader());
</del><ins>+            postListenerTask(eventNames().checkingEvent, documentLoader);
</ins><span class="cx">             if (m_updateStatus == Downloading)
</span><del>-                postListenerTask(ApplicationCacheHost::DOWNLOADING_EVENT, frame-&gt;loader().documentLoader());
</del><ins>+                postListenerTask(eventNames().downloadingEvent, documentLoader);
</ins><span class="cx">         }
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Don't access anything on disk if private browsing is enabled.
</span><del>-    if (frame-&gt;page()-&gt;usesEphemeralSession() || !frame-&gt;document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame-&gt;tree().top().document()-&gt;securityOrigin())) {
</del><ins>+    if (frame.page()-&gt;usesEphemeralSession() || !frame.document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(frame.tree().top().document()-&gt;securityOrigin())) {
</ins><span class="cx">         ASSERT(m_pendingMasterResourceLoaders.isEmpty());
</span><span class="cx">         ASSERT(m_pendingEntries.isEmpty());
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated);
</span><del>-        postListenerTask(ApplicationCacheHost::CHECKING_EVENT, frame-&gt;loader().documentLoader());
-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, frame-&gt;loader().documentLoader());
</del><ins>+        postListenerTask(eventNames().checkingEvent, documentLoader);
+        postListenerTask(eventNames().errorEvent, documentLoader);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_frame);
</span><del>-    m_frame = frame;
</del><ins>+    m_frame = &amp;frame;
</ins><span class="cx"> 
</span><span class="cx">     setUpdateStatus(Checking);
</span><span class="cx"> 
</span><del>-    postListenerTask(ApplicationCacheHost::CHECKING_EVENT, m_associatedDocumentLoaders);
</del><ins>+    postListenerTask(eventNames().checkingEvent, m_associatedDocumentLoaders);
</ins><span class="cx">     if (!m_newestCache) {
</span><span class="cx">         ASSERT(updateOption == ApplicationCacheUpdateWithBrowsingContext);
</span><del>-        postListenerTask(ApplicationCacheHost::CHECKING_EVENT, frame-&gt;loader().documentLoader());
</del><ins>+        postListenerTask(eventNames().checkingEvent, documentLoader);
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     ASSERT(!m_manifestHandle);
</span><span class="lines">@@ -449,7 +443,7 @@
</span><span class="cx">     m_manifestHandle = createResourceHandle(m_manifestURL, m_newestCache ? m_newestCache-&gt;manifestResource() : 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::abort(Frame* frame)
</del><ins>+void ApplicationCacheGroup::abort(Frame&amp; frame)
</ins><span class="cx"> {
</span><span class="cx">     if (m_updateStatus == Idle)
</span><span class="cx">         return;
</span><span class="lines">@@ -458,7 +452,7 @@
</span><span class="cx">     if (m_completionType != None)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    frame-&gt;document()-&gt;addConsoleMessage(MessageSource::AppCache, MessageLevel::Debug, ASCIILiteral(&quot;Application Cache download process was aborted.&quot;));
</del><ins>+    frame.document()-&gt;addConsoleMessage(MessageSource::AppCache, MessageLevel::Debug, ASCIILiteral(&quot;Application Cache download process was aborted.&quot;));
</ins><span class="cx">     cacheUpdateFailed();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -502,8 +496,7 @@
</span><span class="cx">     ASSERT(handle == m_currentHandle);
</span><span class="cx"> 
</span><span class="cx">     URL url(handle-&gt;firstRequest().url());
</span><del>-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
</del><ins>+    url.removeFragmentIdentifier();
</ins><span class="cx">     
</span><span class="cx">     ASSERT(!m_currentResource);
</span><span class="cx">     ASSERT(m_pendingEntries.contains(url));
</span><span class="lines">@@ -593,7 +586,7 @@
</span><span class="cx">     
</span><span class="cx">     ASSERT(m_cacheBeingUpdated);
</span><span class="cx"> 
</span><del>-    m_cacheBeingUpdated-&gt;addResource(WTFMove(m_currentResource));
</del><ins>+    m_cacheBeingUpdated-&gt;addResource(m_currentResource.releaseNonNull());
</ins><span class="cx">     m_currentHandle = nullptr;
</span><span class="cx"> 
</span><span class="cx">     // While downloading check to see if we have exceeded the available quota.
</span><span class="lines">@@ -626,8 +619,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned type = m_currentResource ? m_currentResource-&gt;type() : m_pendingEntries.get(handle-&gt;firstRequest().url());
</span><span class="cx">     URL url(handle-&gt;firstRequest().url());
</span><del>-    if (url.hasFragmentIdentifier())
-        url.removeFragmentIdentifier();
</del><ins>+    url.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!m_currentResource || !m_pendingEntries.contains(url));
</span><span class="cx">     m_currentResource = nullptr;
</span><span class="lines">@@ -734,7 +726,7 @@
</span><span class="cx">     // We have the manifest, now download the resources.
</span><span class="cx">     setUpdateStatus(Downloading);
</span><span class="cx">     
</span><del>-    postListenerTask(ApplicationCacheHost::DOWNLOADING_EVENT, m_associatedDocumentLoaders);
</del><ins>+    postListenerTask(eventNames().downloadingEvent, m_associatedDocumentLoaders);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_pendingEntries.isEmpty());
</span><span class="cx"> 
</span><span class="lines">@@ -802,8 +794,8 @@
</span><span class="cx"> {
</span><span class="cx">     makeObsolete();
</span><span class="cx"> 
</span><del>-    postListenerTask(ApplicationCacheHost::OBSOLETE_EVENT, m_associatedDocumentLoaders);
-    postListenerTask(ApplicationCacheHost::ERROR_EVENT, m_pendingMasterResourceLoaders);
</del><ins>+    postListenerTask(eventNames().obsoleteEvent, m_associatedDocumentLoaders);
+    postListenerTask(eventNames().errorEvent, m_pendingMasterResourceLoaders);
</ins><span class="cx"> 
</span><span class="cx">     stopLoading();
</span><span class="cx"> 
</span><span class="lines">@@ -813,9 +805,9 @@
</span><span class="cx">     while (!m_pendingMasterResourceLoaders.isEmpty()) {
</span><span class="cx">         HashSet&lt;DocumentLoader*&gt;::iterator it = m_pendingMasterResourceLoaders.begin();
</span><span class="cx">         
</span><del>-        ASSERT((*it)-&gt;applicationCacheHost()-&gt;candidateApplicationCacheGroup() == this);
-        ASSERT(!(*it)-&gt;applicationCacheHost()-&gt;applicationCache());
-        (*it)-&gt;applicationCacheHost()-&gt;setCandidateApplicationCacheGroup(nullptr);
</del><ins>+        ASSERT((*it)-&gt;applicationCacheHost().candidateApplicationCacheGroup() == this);
+        ASSERT(!(*it)-&gt;applicationCacheHost().applicationCache());
+        (*it)-&gt;applicationCacheHost().setCandidateApplicationCacheGroup(nullptr);
</ins><span class="cx">         m_pendingMasterResourceLoaders.remove(it);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -822,7 +814,7 @@
</span><span class="cx">     m_downloadingPendingMasterResourceLoadersCount = 0;
</span><span class="cx">     setUpdateStatus(Idle);    
</span><span class="cx">     m_frame = nullptr;
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (m_caches.isEmpty()) {
</span><span class="cx">         ASSERT(m_associatedDocumentLoaders.isEmpty());
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated);
</span><span class="lines">@@ -849,13 +841,13 @@
</span><span class="cx"> 
</span><span class="cx">         // The storage could have been manually emptied by the user.
</span><span class="cx">         if (!m_storageID)
</span><del>-            m_storage-&gt;storeNewestCache(this);
</del><ins>+            m_storage-&gt;storeNewestCache(*this);
</ins><span class="cx"> 
</span><del>-        postListenerTask(ApplicationCacheHost::NOUPDATE_EVENT, m_associatedDocumentLoaders);
</del><ins>+        postListenerTask(eventNames().noupdateEvent, m_associatedDocumentLoaders);
</ins><span class="cx">         break;
</span><span class="cx">     case Failure:
</span><span class="cx">         ASSERT(!m_cacheBeingUpdated);
</span><del>-        postListenerTask(ApplicationCacheHost::ERROR_EVENT, m_associatedDocumentLoaders);
</del><ins>+        postListenerTask(eventNames().errorEvent, m_associatedDocumentLoaders);
</ins><span class="cx">         if (m_caches.isEmpty()) {
</span><span class="cx">             ASSERT(m_associatedDocumentLoaders.isEmpty());
</span><span class="cx">             delete this;
</span><span class="lines">@@ -867,7 +859,7 @@
</span><span class="cx"> 
</span><span class="cx">         ASSERT(m_cacheBeingUpdated);
</span><span class="cx">         if (m_manifestResource)
</span><del>-            m_cacheBeingUpdated-&gt;setManifestResource(WTFMove(m_manifestResource));
</del><ins>+            m_cacheBeingUpdated-&gt;setManifestResource(m_manifestResource.releaseNonNull());
</ins><span class="cx">         else {
</span><span class="cx">             // We can get here as a result of retrying the Complete step, following
</span><span class="cx">             // a failure of the cache storage to save the newest cache due to hitting
</span><span class="lines">@@ -887,8 +879,8 @@
</span><span class="cx">             didReachOriginQuota(totalSpaceNeeded);
</span><span class="cx"> 
</span><span class="cx">         ApplicationCacheStorage::FailureReason failureReason;
</span><del>-        setNewestCache(WTFMove(m_cacheBeingUpdated));
-        if (m_storage-&gt;storeNewestCache(this, oldNewestCache.get(), failureReason)) {
</del><ins>+        setNewestCache(m_cacheBeingUpdated.releaseNonNull());
+        if (m_storage-&gt;storeNewestCache(*this, oldNewestCache.get(), failureReason)) {
</ins><span class="cx">             // New cache stored, now remove the old cache.
</span><span class="cx">             if (oldNewestCache)
</span><span class="cx">                 m_storage-&gt;remove(oldNewestCache.get());
</span><span class="lines">@@ -895,10 +887,10 @@
</span><span class="cx"> 
</span><span class="cx">             // Fire the final progress event.
</span><span class="cx">             ASSERT(m_progressDone == m_progressTotal);
</span><del>-            postListenerTask(ApplicationCacheHost::PROGRESS_EVENT, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
</del><ins>+            postListenerTask(eventNames().progressEvent, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
</ins><span class="cx"> 
</span><span class="cx">             // Fire the success event.
</span><del>-            postListenerTask(isUpgradeAttempt ? ApplicationCacheHost::UPDATEREADY_EVENT : ApplicationCacheHost::CACHED_EVENT, m_associatedDocumentLoaders);
</del><ins>+            postListenerTask(isUpgradeAttempt ? eventNames().updatereadyEvent : eventNames().cachedEvent, m_associatedDocumentLoaders);
</ins><span class="cx">             // It is clear that the origin quota was not reached, so clear the flag if it was set.
</span><span class="cx">             m_originQuotaExceededPreviously = false;
</span><span class="cx">         } else {
</span><span class="lines">@@ -919,10 +911,8 @@
</span><span class="cx"> 
</span><span class="cx">                 // Save a reference to the new cache.
</span><span class="cx">                 m_cacheBeingUpdated = WTFMove(m_newestCache);
</span><del>-                if (oldNewestCache) {
-                    // Reinstate the oldNewestCache.
-                    setNewestCache(WTFMove(oldNewestCache));
-                }
</del><ins>+                if (oldNewestCache)
+                    setNewestCache(oldNewestCache.releaseNonNull());
</ins><span class="cx">                 scheduleReachedMaxAppCacheSizeCallback();
</span><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="lines">@@ -930,7 +920,7 @@
</span><span class="cx">             // Run the &quot;cache failure steps&quot;
</span><span class="cx">             // Fire the error events to all pending master entries, as well any other cache hosts
</span><span class="cx">             // currently associated with a cache in this group.
</span><del>-            postListenerTask(ApplicationCacheHost::ERROR_EVENT, m_associatedDocumentLoaders);
</del><ins>+            postListenerTask(eventNames().errorEvent, m_associatedDocumentLoaders);
</ins><span class="cx">             // Disassociate the pending master entries from the failed new cache. Note that
</span><span class="cx">             // all other loaders in the m_associatedDocumentLoaders are still associated with
</span><span class="cx">             // some other cache in this group. They are not associated with the failed new cache.
</span><span class="lines">@@ -939,12 +929,12 @@
</span><span class="cx">             Vector&lt;DocumentLoader*&gt; loaders;
</span><span class="cx">             copyToVector(m_pendingMasterResourceLoaders, loaders);
</span><span class="cx">             for (auto&amp; loader : loaders)
</span><del>-                disassociateDocumentLoader(loader); // This can delete this group.
</del><ins>+                disassociateDocumentLoader(*loader); // This can delete this group.
</ins><span class="cx"> 
</span><span class="cx">             // Reinstate the oldNewestCache, if there was one.
</span><span class="cx">             if (oldNewestCache) {
</span><span class="cx">                 // This will discard the failed new cache.
</span><del>-                setNewestCache(WTFMove(oldNewestCache));
</del><ins>+                setNewestCache(oldNewestCache.releaseNonNull());
</ins><span class="cx">             } else {
</span><span class="cx">                 // We must have been deleted by the last call to disassociateDocumentLoader().
</span><span class="cx">                 return;
</span><span class="lines">@@ -973,14 +963,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    EntryMap::const_iterator it = m_pendingEntries.begin();
</del><ins>+    auto firstPendingEntryURL = m_pendingEntries.begin()-&gt;key;
</ins><span class="cx"> 
</span><del>-    postListenerTask(ApplicationCacheHost::PROGRESS_EVENT, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
</del><ins>+    postListenerTask(eventNames().progressEvent, m_progressTotal, m_progressDone, m_associatedDocumentLoaders);
</ins><span class="cx">     m_progressDone++;
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_currentHandle);
</span><del>-    
-    m_currentHandle = createResourceHandle(URL(ParsedURLString, it-&gt;key), m_newestCache ? m_newestCache-&gt;resourceForURL(it-&gt;key) : 0);
</del><ins>+    m_currentHandle = createResourceHandle(URL(ParsedURLString, firstPendingEntryURL), m_newestCache ? m_newestCache-&gt;resourceForURL(firstPendingEntryURL) : 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheGroup::deliverDelayedMainResources()
</span><span class="lines">@@ -988,19 +977,15 @@
</span><span class="cx">     // Need to copy loaders, because the cache group may be destroyed at the end of iteration.
</span><span class="cx">     Vector&lt;DocumentLoader*&gt; loaders;
</span><span class="cx">     copyToVector(m_pendingMasterResourceLoaders, loaders);
</span><del>-    size_t count = loaders.size();
-    for (size_t i = 0; i != count; ++i) {
-        DocumentLoader* loader = loaders[i];
</del><ins>+    for (auto* loader : loaders) {
</ins><span class="cx">         if (loader-&gt;isLoadingMainResource())
</span><span class="cx">             continue;
</span><del>-
-        const ResourceError&amp; error = loader-&gt;mainDocumentError();
-        if (error.isNull())
-            finishedLoadingMainResource(loader);
</del><ins>+        if (loader-&gt;mainDocumentError().isNull())
+            finishedLoadingMainResource(*loader);
</ins><span class="cx">         else
</span><del>-            failedLoadingMainResource(loader);
</del><ins>+            failedLoadingMainResource(*loader);
</ins><span class="cx">     }
</span><del>-    if (!count)
</del><ins>+    if (loaders.isEmpty())
</ins><span class="cx">         checkIfLoadIsComplete();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1008,13 +993,12 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_cacheBeingUpdated);
</span><span class="cx">     ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
</span><del>-    
</del><ins>+
</ins><span class="cx">     // Don't add the URL if we already have an master resource in the cache
</span><span class="cx">     // (i.e., the main resource finished loading before the manifest).
</span><del>-    if (ApplicationCacheResource* resource = m_cacheBeingUpdated-&gt;resourceForURL(url)) {
</del><ins>+    if (auto* resource = m_cacheBeingUpdated-&gt;resourceForURL(url)) {
</ins><span class="cx">         ASSERT(resource-&gt;type() &amp; ApplicationCacheResource::Master);
</span><span class="cx">         ASSERT(!m_frame-&gt;loader().documentLoader()-&gt;isLoadingMainResource());
</span><del>-    
</del><span class="cx">         resource-&gt;addType(type);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -1025,11 +1009,8 @@
</span><span class="cx">         m_manifestResource-&gt;addType(type);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    
-    EntryMap::AddResult result = m_pendingEntries.add(url, type);
-    
-    if (!result.isNewEntry)
-        result.iterator-&gt;value |= type;
</del><ins>+
+    m_pendingEntries.add(url, type).iterator-&gt;value |= type;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheGroup::associateDocumentLoaderWithCache(DocumentLoader* loader, ApplicationCache* cache)
</span><span class="lines">@@ -1040,63 +1021,63 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_isObsolete);
</span><span class="cx"> 
</span><del>-    loader-&gt;applicationCacheHost()-&gt;setApplicationCache(cache);
</del><ins>+    loader-&gt;applicationCacheHost().setApplicationCache(cache);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!m_associatedDocumentLoaders.contains(loader));
</span><span class="cx">     m_associatedDocumentLoaders.add(loader);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-class ChromeClientCallbackTimer: public TimerBase {
</del><ins>+class ChromeClientCallbackTimer final : public TimerBase {
</ins><span class="cx"> public:
</span><del>-    ChromeClientCallbackTimer(ApplicationCacheGroup* cacheGroup)
-        : m_cacheGroup(cacheGroup)
</del><ins>+    ChromeClientCallbackTimer(ApplicationCacheGroup&amp; group)
+        : m_group(group)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void fired() override
</del><ins>+    void fired() final
</ins><span class="cx">     {
</span><del>-        m_cacheGroup-&gt;didReachMaxAppCacheSize();
</del><ins>+        m_group.didReachMaxAppCacheSize();
</ins><span class="cx">         delete this;
</span><span class="cx">     }
</span><del>-    // Note that there is no need to use a RefPtr here. The ApplicationCacheGroup instance is guaranteed
-    // to be alive when the timer fires since invoking the ChromeClient callback is part of its normal
</del><ins>+
+    // Note that there is no need to use a Ref here. The ApplicationCacheGroup instance is guaranteed
+    // to be alive when the timer fires since invoking the callback is part of its normal
</ins><span class="cx">     // update machinery and nothing can yet cause it to get deleted.
</span><del>-    ApplicationCacheGroup* m_cacheGroup;
</del><ins>+    ApplicationCacheGroup&amp; m_group;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheGroup::scheduleReachedMaxAppCacheSizeCallback()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    ChromeClientCallbackTimer* timer = new ChromeClientCallbackTimer(this);
</del><ins>+    auto* timer = new ChromeClientCallbackTimer(*this);
</ins><span class="cx">     timer-&gt;startOneShot(0);
</span><span class="cx">     // The timer will delete itself once it fires.
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone, const HashSet&lt;DocumentLoader*&gt;&amp; loaderSet)
</del><ins>+void ApplicationCacheGroup::postListenerTask(const AtomicString&amp; eventType, int progressTotal, int progressDone, const HashSet&lt;DocumentLoader*&gt;&amp; loaderSet)
</ins><span class="cx"> {
</span><span class="cx">     for (auto&amp; loader : loaderSet)
</span><del>-        postListenerTask(eventID, progressTotal, progressDone, loader);
</del><ins>+        postListenerTask(eventType, progressTotal, progressDone, *loader);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheGroup::postListenerTask(ApplicationCacheHost::EventID eventID, int progressTotal, int progressDone, DocumentLoader* loader)
</del><ins>+void ApplicationCacheGroup::postListenerTask(const AtomicString&amp; eventType, int progressTotal, int progressDone, DocumentLoader&amp; loader)
</ins><span class="cx"> {
</span><del>-    Frame* frame = loader-&gt;frame();
</del><ins>+    auto* frame = loader.frame();
</ins><span class="cx">     if (!frame)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    ASSERT(frame-&gt;loader().documentLoader() == loader);
</del><ins>+    ASSERT(frame-&gt;loader().documentLoader() == &amp;loader);
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;DocumentLoader&gt; loaderProtector(loader);
-    frame-&gt;document()-&gt;postTask([loaderProtector, eventID, progressTotal, progressDone] (ScriptExecutionContext&amp; context) {
</del><ins>+    RefPtr&lt;DocumentLoader&gt; protectedLoader(&amp;loader);
+    frame-&gt;document()-&gt;postTask([protectedLoader, &amp;eventType, progressTotal, progressDone] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><del>-        Frame* frame = loaderProtector-&gt;frame();
</del><ins>+        auto* frame = protectedLoader-&gt;frame();
</ins><span class="cx">         if (!frame)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        ASSERT(frame-&gt;loader().documentLoader() == loaderProtector);
-
-        loaderProtector-&gt;applicationCacheHost()-&gt;notifyDOMApplicationCache(eventID, progressTotal, progressDone);
</del><ins>+        ASSERT(frame-&gt;loader().documentLoader() == protectedLoader);
+        protectedLoader-&gt;applicationCacheHost().notifyDOMApplicationCache(eventType, progressTotal, progressDone);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1108,8 +1089,7 @@
</span><span class="cx"> void ApplicationCacheGroup::clearStorageID()
</span><span class="cx"> {
</span><span class="cx">     m_storageID = 0;
</span><del>-    
-    for (const auto&amp; cache : m_caches)
</del><ins>+    for (auto&amp; cache : m_caches)
</ins><span class="cx">         cache-&gt;clearStorageID();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheGrouph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -49,8 +49,9 @@
</span><span class="cx">     ApplicationCacheUpdateWithoutBrowsingContext
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class ApplicationCacheGroup : ResourceHandleClient {
-    WTF_MAKE_NONCOPYABLE(ApplicationCacheGroup); WTF_MAKE_FAST_ALLOCATED;
</del><ins>+class ApplicationCacheGroup final : private ResourceHandleClient {
+    WTF_MAKE_NONCOPYABLE(ApplicationCacheGroup);
+    WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><span class="cx">     explicit ApplicationCacheGroup(Ref&lt;ApplicationCacheStorage&gt;&amp;&amp;, const URL&amp; manifestURL);
</span><span class="cx">     virtual ~ApplicationCacheGroup();
</span><span class="lines">@@ -60,8 +61,8 @@
</span><span class="cx">     static ApplicationCache* cacheForMainRequest(const ResourceRequest&amp;, DocumentLoader*);
</span><span class="cx">     static ApplicationCache* fallbackCacheForMainRequest(const ResourceRequest&amp;, DocumentLoader*);
</span><span class="cx">     
</span><del>-    static void selectCache(Frame*, const URL&amp; manifestURL);
-    static void selectCacheWithoutManifestURL(Frame*);
</del><ins>+    static void selectCache(Frame&amp;, const URL&amp; manifestURL);
+    static void selectCacheWithoutManifestURL(Frame&amp;);
</ins><span class="cx"> 
</span><span class="cx">     ApplicationCacheStorage&amp; storage() { return m_storage; }
</span><span class="cx">     const URL&amp; manifestURL() const { return m_manifestURL; }
</span><span class="lines">@@ -73,31 +74,31 @@
</span><span class="cx">     unsigned storageID() const { return m_storageID; }
</span><span class="cx">     void clearStorageID();
</span><span class="cx">     
</span><del>-    void update(Frame*, ApplicationCacheUpdateOption); // FIXME: Frame should not be needed when updating without browsing context.
-    void cacheDestroyed(ApplicationCache*);
</del><ins>+    void update(Frame&amp;, ApplicationCacheUpdateOption); // FIXME: Frame should not be needed when updating without browsing context.
+    void cacheDestroyed(ApplicationCache&amp;);
</ins><span class="cx">     
</span><del>-    void abort(Frame*);
</del><ins>+    void abort(Frame&amp;);
</ins><span class="cx"> 
</span><del>-    bool cacheIsComplete(ApplicationCache* cache) { return m_caches.contains(cache); }
</del><ins>+    bool cacheIsComplete(ApplicationCache&amp; cache) { return m_caches.contains(&amp;cache); }
</ins><span class="cx"> 
</span><del>-    void stopLoadingInFrame(Frame*);
</del><ins>+    void stopLoadingInFrame(Frame&amp;);
</ins><span class="cx"> 
</span><span class="cx">     ApplicationCache* newestCache() const { return m_newestCache.get(); }
</span><del>-    void setNewestCache(PassRefPtr&lt;ApplicationCache&gt;);
</del><ins>+    void setNewestCache(Ref&lt;ApplicationCache&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void makeObsolete();
</span><span class="cx">     bool isObsolete() const { return m_isObsolete; }
</span><span class="cx"> 
</span><del>-    void finishedLoadingMainResource(DocumentLoader*);
-    void failedLoadingMainResource(DocumentLoader*);
</del><ins>+    void finishedLoadingMainResource(DocumentLoader&amp;);
+    void failedLoadingMainResource(DocumentLoader&amp;);
</ins><span class="cx"> 
</span><del>-    void disassociateDocumentLoader(DocumentLoader*);
</del><ins>+    void disassociateDocumentLoader(DocumentLoader&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static void postListenerTask(ApplicationCacheHost::EventID id, const HashSet&lt;DocumentLoader*&gt;&amp; set) { postListenerTask(id, 0, 0, set); }
-    static void postListenerTask(ApplicationCacheHost::EventID id, DocumentLoader* loader)  { postListenerTask(id, 0, 0, loader); }
-    static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, const HashSet&lt;DocumentLoader*&gt;&amp;);
-    static void postListenerTask(ApplicationCacheHost::EventID, int progressTotal, int progressDone, DocumentLoader*);
</del><ins>+    static void postListenerTask(const AtomicString&amp; eventType, const HashSet&lt;DocumentLoader*&gt;&amp; set) { postListenerTask(eventType, 0, 0, set); }
+    static void postListenerTask(const AtomicString&amp; eventType, DocumentLoader&amp; loader)  { postListenerTask(eventType, 0, 0, loader); }
+    static void postListenerTask(const AtomicString&amp; eventType, int progressTotal, int progressDone, const HashSet&lt;DocumentLoader*&gt;&amp;);
+    static void postListenerTask(const AtomicString&amp; eventType, int progressTotal, int progressDone, DocumentLoader&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void scheduleReachedMaxAppCacheSizeCallback();
</span><span class="cx"> 
</span><span class="lines">@@ -135,7 +136,7 @@
</span><span class="cx"> 
</span><span class="cx">     URL m_manifestURL;
</span><span class="cx">     RefPtr&lt;SecurityOrigin&gt; m_origin;
</span><del>-    UpdateStatus m_updateStatus;
</del><ins>+    UpdateStatus m_updateStatus { Idle };
</ins><span class="cx">     
</span><span class="cx">     // This is the newest complete cache in the group.
</span><span class="cx">     RefPtr&lt;ApplicationCache&gt; m_newestCache;
</span><span class="lines">@@ -150,26 +151,25 @@
</span><span class="cx">     // List of pending master entries, used during the update process to ensure that new master entries are cached.
</span><span class="cx">     HashSet&lt;DocumentLoader*&gt; m_pendingMasterResourceLoaders;
</span><span class="cx">     // How many of the above pending master entries have not yet finished downloading.
</span><del>-    int m_downloadingPendingMasterResourceLoadersCount;
</del><ins>+    int m_downloadingPendingMasterResourceLoadersCount { 0 };
</ins><span class="cx">     
</span><span class="cx">     // These are all the document loaders that are associated with a cache in this group.
</span><span class="cx">     HashSet&lt;DocumentLoader*&gt; m_associatedDocumentLoaders;
</span><span class="cx"> 
</span><span class="cx">     // The URLs and types of pending cache entries.
</span><del>-    typedef HashMap&lt;String, unsigned&gt; EntryMap;
-    EntryMap m_pendingEntries;
</del><ins>+    HashMap&lt;String, unsigned&gt; m_pendingEntries;
</ins><span class="cx">     
</span><span class="cx">     // The total number of items to be processed to update the cache group and the number that have been done.
</span><del>-    int m_progressTotal;
-    int m_progressDone;
</del><ins>+    int m_progressTotal { 0 };
+    int m_progressDone { 0 };
</ins><span class="cx"> 
</span><span class="cx">     // Frame used for fetching resources when updating.
</span><span class="cx">     // FIXME: An update started by a particular frame should not stop if it is destroyed, but there are other frames associated with the same cache group.
</span><del>-    Frame* m_frame;
</del><ins>+    Frame* m_frame { nullptr };
</ins><span class="cx">   
</span><span class="cx">     // An obsolete cache group is never stored, but the opposite is not true - storing may fail for multiple reasons, such as exceeding disk quota.
</span><del>-    unsigned m_storageID;
-    bool m_isObsolete;
</del><ins>+    unsigned m_storageID { 0 };
+    bool m_isObsolete { false };
</ins><span class="cx"> 
</span><span class="cx">     // During update, this is used to handle asynchronously arriving results.
</span><span class="cx">     enum CompletionType {
</span><span class="lines">@@ -178,12 +178,12 @@
</span><span class="cx">         Failure,
</span><span class="cx">         Completed
</span><span class="cx">     };
</span><del>-    CompletionType m_completionType;
</del><ins>+    CompletionType m_completionType { None };
</ins><span class="cx"> 
</span><span class="cx">     // This flag is set immediately after the ChromeClient::reachedMaxAppCacheSize() callback is invoked as a result of the storage layer failing to save a cache
</span><span class="cx">     // due to reaching the maximum size of the application cache database file. This flag is used by ApplicationCacheGroup::checkIfLoadIsComplete() to decide
</span><span class="cx">     // the course of action in case of this failure (i.e. call the ChromeClient callback or run the failure steps).
</span><del>-    bool m_calledReachedMaxAppCacheSize;
</del><ins>+    bool m_calledReachedMaxAppCacheSize { false };
</ins><span class="cx">     
</span><span class="cx">     RefPtr&lt;ResourceHandle&gt; m_currentHandle;
</span><span class="cx">     RefPtr&lt;ApplicationCacheResource&gt; m_currentResource;
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">     RefPtr&lt;ResourceHandle&gt; m_manifestHandle;
</span><span class="cx"> 
</span><span class="cx">     int64_t m_availableSpaceInQuota;
</span><del>-    bool m_originQuotaExceededPreviously;
</del><ins>+    bool m_originQuotaExceededPreviously { false };
</ins><span class="cx"> 
</span><span class="cx">     friend class ChromeClientCallbackTimer;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;ContentSecurityPolicy.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><span class="cx"> #include &quot;DOMApplicationCache.h&quot;
</span><ins>+#include &quot;EventNames.h&quot;
</ins><span class="cx"> #include &quot;FileSystem.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="lines">@@ -48,10 +49,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> ApplicationCacheHost::ApplicationCacheHost(DocumentLoader&amp; documentLoader)
</span><del>-    : m_domApplicationCache(nullptr)
-    , m_documentLoader(documentLoader)
-    , m_defersEvents(true)
-    , m_candidateApplicationCacheGroup(nullptr)
</del><ins>+    : m_documentLoader(documentLoader)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -58,21 +56,22 @@
</span><span class="cx"> ApplicationCacheHost::~ApplicationCacheHost()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_applicationCache || !m_candidateApplicationCacheGroup || m_applicationCache-&gt;group() == m_candidateApplicationCacheGroup);
</span><del>-
</del><span class="cx">     if (m_applicationCache)
</span><del>-        m_applicationCache-&gt;group()-&gt;disassociateDocumentLoader(&amp;m_documentLoader);
</del><ins>+        m_applicationCache-&gt;group()-&gt;disassociateDocumentLoader(m_documentLoader);
</ins><span class="cx">     else if (m_candidateApplicationCacheGroup)
</span><del>-        m_candidateApplicationCacheGroup-&gt;disassociateDocumentLoader(&amp;m_documentLoader);
</del><ins>+        m_candidateApplicationCacheGroup-&gt;disassociateDocumentLoader(m_documentLoader);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::selectCacheWithoutManifest()
</span><span class="cx"> {
</span><del>-    ApplicationCacheGroup::selectCacheWithoutManifestURL(m_documentLoader.frame());
</del><ins>+    ASSERT(m_documentLoader.frame());
+    ApplicationCacheGroup::selectCacheWithoutManifestURL(*m_documentLoader.frame());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::selectCacheWithManifest(const URL&amp; manifestURL)
</span><span class="cx"> {
</span><del>-    ApplicationCacheGroup::selectCache(m_documentLoader.frame(), manifestURL);
</del><ins>+    ASSERT(m_documentLoader.frame());
+    ApplicationCacheGroup::selectCache(*m_documentLoader.frame(), manifestURL);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::maybeLoadMainResource(ResourceRequest&amp; request, SubstituteData&amp; substituteData)
</span><span class="lines">@@ -140,12 +139,11 @@
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::mainResourceDataReceived(const char*, int, long long, bool)
</span><span class="cx"> {
</span><del>-    // This method is here to facilitate alternate implemetations of this interface by the host browser.
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::failedLoadingMainResource()
</span><span class="cx"> {
</span><del>-    ApplicationCacheGroup* group = m_candidateApplicationCacheGroup;
</del><ins>+    auto* group = m_candidateApplicationCacheGroup;
</ins><span class="cx">     if (!group &amp;&amp; m_applicationCache) {
</span><span class="cx">         if (mainResourceApplicationCache()) {
</span><span class="cx">             // Even when the main resource is being loaded from an application cache, loading can fail if aborted.
</span><span class="lines">@@ -155,17 +153,17 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (group)
</span><del>-        group-&gt;failedLoadingMainResource(&amp;m_documentLoader);
</del><ins>+        group-&gt;failedLoadingMainResource(m_documentLoader);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::finishedLoadingMainResource()
</span><span class="cx"> {
</span><del>-    ApplicationCacheGroup* group = candidateApplicationCacheGroup();
</del><ins>+    auto* group = candidateApplicationCacheGroup();
</ins><span class="cx">     if (!group &amp;&amp; applicationCache() &amp;&amp; !mainResourceApplicationCache())
</span><span class="cx">         group = applicationCache()-&gt;group();
</span><span class="cx">     
</span><span class="cx">     if (group)
</span><del>-        group-&gt;finishedLoadingMainResource(&amp;m_documentLoader);
</del><ins>+        group-&gt;finishedLoadingMainResource(m_documentLoader);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::maybeLoadResource(ResourceLoader&amp; loader, const ResourceRequest&amp; request, const URL&amp; originalURL)
</span><span class="lines">@@ -186,17 +184,19 @@
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::maybeLoadFallbackForRedirect(ResourceLoader* resourceLoader, ResourceRequest&amp; request, const ResourceResponse&amp; redirectResponse)
</span><span class="cx"> {
</span><del>-    if (!redirectResponse.isNull() &amp;&amp; !protocolHostAndPortAreEqual(request.url(), redirectResponse.url()))
</del><ins>+    if (!redirectResponse.isNull() &amp;&amp; !protocolHostAndPortAreEqual(request.url(), redirectResponse.url())) {
</ins><span class="cx">         if (scheduleLoadFallbackResourceFromApplicationCache(resourceLoader))
</span><span class="cx">             return true;
</span><ins>+    }
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::maybeLoadFallbackForResponse(ResourceLoader* resourceLoader, const ResourceResponse&amp; response)
</span><span class="cx"> {
</span><del>-    if (response.httpStatusCode() / 100 == 4 || response.httpStatusCode() / 100 == 5)
</del><ins>+    if (response.httpStatusCode() / 100 == 4 || response.httpStatusCode() / 100 == 5) {
</ins><span class="cx">         if (scheduleLoadFallbackResourceFromApplicationCache(resourceLoader))
</span><span class="cx">             return true;
</span><ins>+    }
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -220,11 +220,9 @@
</span><span class="cx">     // app cache media files are always created with encodeForFileName(createCanonicalUUIDString()).
</span><span class="cx"> 
</span><span class="cx"> #if USE(CF) &amp;&amp; PLATFORM(WIN)
</span><del>-    RetainPtr&lt;CFURLRef&gt; cfURL = adoptCF(CFURLCreateWithFileSystemPath(0, path.createCFString().get(), kCFURLWindowsPathStyle, false));
-    URL url(cfURL.get());
</del><ins>+    URL url(adoptCF(CFURLCreateWithFileSystemPath(0, path.createCFString().get(), kCFURLWindowsPathStyle, false)).get());
</ins><span class="cx"> #else
</span><span class="cx">     URL url;
</span><del>-
</del><span class="cx">     url.setProtocol(ASCIILiteral(&quot;file&quot;));
</span><span class="cx">     url.setPath(path);
</span><span class="cx"> #endif
</span><span class="lines">@@ -246,7 +244,7 @@
</span><span class="cx">     if (!shouldLoadResourceFromApplicationCache(request, resource))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;SharedBuffer&gt; responseData = resource ? bufferFromResource(*resource) : nullptr;
</del><ins>+    auto responseData = resource ? bufferFromResource(*resource) : nullptr;
</ins><span class="cx">     if (!responseData) {
</span><span class="cx">         error = m_documentLoader.frameLoader()-&gt;client().cannotShowURLError(request);
</span><span class="cx">         return true;
</span><span class="lines">@@ -286,20 +284,21 @@
</span><span class="cx">     m_domApplicationCache = domApplicationCache;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheHost::notifyDOMApplicationCache(EventID id, int total, int done)
</del><ins>+void ApplicationCacheHost::notifyDOMApplicationCache(const AtomicString&amp; eventType, int total, int done)
</ins><span class="cx"> {
</span><del>-    if (id != PROGRESS_EVENT)
</del><ins>+    if (eventType != eventNames().progressEvent)
</ins><span class="cx">         InspectorInstrumentation::updateApplicationCacheStatus(m_documentLoader.frame());
</span><span class="cx"> 
</span><span class="cx">     if (m_defersEvents) {
</span><span class="cx">         // Event dispatching is deferred until document.onload has fired.
</span><del>-        m_deferredEvents.append(DeferredEvent(id, total, done));
</del><ins>+        m_deferredEvents.append({ eventType, total, done });
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    dispatchDOMEvent(id, total, done);
</del><ins>+
+    dispatchDOMEvent(eventType, total, done);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheHost::stopLoadingInFrame(Frame* frame)
</del><ins>+void ApplicationCacheHost::stopLoadingInFrame(Frame&amp; frame)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_applicationCache || !m_candidateApplicationCacheGroup || m_applicationCache-&gt;group() == m_candidateApplicationCacheGroup);
</span><span class="cx"> 
</span><span class="lines">@@ -312,22 +311,34 @@
</span><span class="cx"> void ApplicationCacheHost::stopDeferringEvents()
</span><span class="cx"> {
</span><span class="cx">     Ref&lt;DocumentLoader&gt; protect(m_documentLoader);
</span><del>-    for (auto&amp; event : m_deferredEvents)
-        dispatchDOMEvent(event.eventID, event.progressTotal, event.progressDone);
</del><ins>+
+    // Note, do not cache the size in a local variable.
+    // This code needs to properly handle the case where more events are added to
+    // m_deferredEvents while iterating it. This is why we don't use a modern for loop.
+    for (size_t i = 0; i &lt; m_deferredEvents.size(); ++i) {
+        auto&amp; event = m_deferredEvents[i];
+        dispatchDOMEvent(event.eventType, event.progressTotal, event.progressDone);
+    }
+
</ins><span class="cx">     m_deferredEvents.clear();
</span><span class="cx">     m_defersEvents = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheHost::fillResourceList(ResourceInfoList* resources)
</del><ins>+Vector&lt;ApplicationCacheHost::ResourceInfo&gt; ApplicationCacheHost::resourceList()
</ins><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();
</del><ins>+    Vector&lt;ResourceInfo&gt; result;
+
+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache || !cache-&gt;isComplete())
</span><del>-        return;
</del><ins>+        return result;
</ins><span class="cx"> 
</span><del>-    for (const auto&amp; urlAndResource : cache-&gt;resources()) {
-        ApplicationCacheResource* resource = urlAndResource.value.get();
</del><ins>+    result.reserveInitialCapacity(cache-&gt;resources().size());
</ins><span class="cx"> 
</span><del>-        unsigned type = resource-&gt;type();
</del><ins>+    for (auto&amp; urlAndResource : cache-&gt;resources()) {
+        ASSERT(urlAndResource.value);
+        auto&amp; resource = *urlAndResource.value;
+
+        unsigned type = resource.type();
</ins><span class="cx">         bool isMaster = type &amp; ApplicationCacheResource::Master;
</span><span class="cx">         bool isManifest = type &amp; ApplicationCacheResource::Manifest;
</span><span class="cx">         bool isExplicit = type &amp; ApplicationCacheResource::Explicit;
</span><span class="lines">@@ -334,33 +345,36 @@
</span><span class="cx">         bool isForeign = type &amp; ApplicationCacheResource::Foreign;
</span><span class="cx">         bool isFallback = type &amp; ApplicationCacheResource::Fallback;
</span><span class="cx"> 
</span><del>-        resources-&gt;append(ResourceInfo(resource-&gt;url(), isMaster, isManifest, isFallback, isForeign, isExplicit, resource-&gt;estimatedSizeInStorage()));
</del><ins>+        result.uncheckedAppend({ resource.url(), isMaster, isManifest, isFallback, isForeign, isExplicit, resource.estimatedSizeInStorage() });
</ins><span class="cx">     }
</span><ins>+
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ApplicationCacheHost::CacheInfo ApplicationCacheHost::applicationCacheInfo()
</span><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();
</del><ins>+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache || !cache-&gt;isComplete())
</span><del>-        return CacheInfo(URL(), 0, 0, 0);
</del><ins>+        return { { }, 0, 0, 0 };
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Add &quot;Creation Time&quot; and &quot;Update Time&quot; to Application Caches.
</span><del>-    return CacheInfo(cache-&gt;manifestResource()-&gt;url(), 0, 0, cache-&gt;estimatedSizeInStorage());
</del><ins>+    return { cache-&gt;manifestResource()-&gt;url(), 0, 0, cache-&gt;estimatedSizeInStorage() };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheHost::dispatchDOMEvent(EventID id, int total, int done)
</del><ins>+static Ref&lt;Event&gt; createApplicationCacheEvent(const AtomicString&amp; eventType, int total, int done)
</ins><span class="cx"> {
</span><del>-    if (m_domApplicationCache) {
-        const AtomicString&amp; eventType = DOMApplicationCache::toEventType(id);
-        RefPtr&lt;Event&gt; event;
-        if (id == PROGRESS_EVENT)
-            event = ProgressEvent::create(eventType, true, done, total);
-        else
-            event = Event::create(eventType, false, false);
-        m_domApplicationCache-&gt;dispatchEvent(*event);
-    }
</del><ins>+    if (eventType == eventNames().progressEvent)
+        return ProgressEvent::create(eventType, true, done, total);
+    return Event::create(eventType, false, false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ApplicationCacheHost::dispatchDOMEvent(const AtomicString&amp; eventType, int total, int done)
+{
+    if (!m_domApplicationCache)
+        return;
+    m_domApplicationCache-&gt;dispatchEvent(createApplicationCacheEvent(eventType, total, done));
+}
+
</ins><span class="cx"> void ApplicationCacheHost::setCandidateApplicationCacheGroup(ApplicationCacheGroup* group)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_applicationCache);
</span><span class="lines">@@ -367,25 +381,24 @@
</span><span class="cx">     m_candidateApplicationCacheGroup = group;
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-void ApplicationCacheHost::setApplicationCache(PassRefPtr&lt;ApplicationCache&gt; applicationCache)
</del><ins>+void ApplicationCacheHost::setApplicationCache(RefPtr&lt;ApplicationCache&gt;&amp;&amp; applicationCache)
</ins><span class="cx"> {
</span><span class="cx">     if (m_candidateApplicationCacheGroup) {
</span><span class="cx">         ASSERT(!m_applicationCache);
</span><span class="cx">         m_candidateApplicationCacheGroup = nullptr;
</span><span class="cx">     }
</span><del>-
-    m_applicationCache = applicationCache;
</del><ins>+    m_applicationCache = WTFMove(applicationCache);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::shouldLoadResourceFromApplicationCache(const ResourceRequest&amp; originalRequest, ApplicationCacheResource*&amp; resource)
</span><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();
</del><ins>+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache || !cache-&gt;isComplete())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     ResourceRequest request(originalRequest);
</span><del>-    if (Frame* loaderFrame = m_documentLoader.frame()) {
-        if (Document* document = loaderFrame-&gt;document())
</del><ins>+    if (auto* loaderFrame = m_documentLoader.frame()) {
+        if (auto* document = loaderFrame-&gt;document())
</ins><span class="cx">             document-&gt;contentSecurityPolicy()-&gt;upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load);
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -430,7 +443,6 @@
</span><span class="cx"> 
</span><span class="cx">     resource = cache-&gt;resourceForURL(fallbackURL);
</span><span class="cx">     ASSERT(resource);
</span><del>-
</del><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -444,30 +456,27 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     loader-&gt;willSwitchToSubstituteResource();
</span><del>-
</del><span class="cx">     m_documentLoader.scheduleSubstituteResourceLoad(*loader, *resource);
</span><del>-
</del><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ApplicationCacheHost::Status ApplicationCacheHost::status() const
</span><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();    
</del><ins>+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache)
</span><span class="cx">         return UNCACHED;
</span><span class="cx"> 
</span><span class="cx">     switch (cache-&gt;group()-&gt;updateStatus()) {
</span><del>-        case ApplicationCacheGroup::Checking:
-            return CHECKING;
-        case ApplicationCacheGroup::Downloading:
-            return DOWNLOADING;
-        case ApplicationCacheGroup::Idle: {
-            if (cache-&gt;group()-&gt;isObsolete())
-                return OBSOLETE;
-            if (cache != cache-&gt;group()-&gt;newestCache())
-                return UPDATEREADY;
-            return IDLE;
-        }
</del><ins>+    case ApplicationCacheGroup::Checking:
+        return CHECKING;
+    case ApplicationCacheGroup::Downloading:
+        return DOWNLOADING;
+    case ApplicationCacheGroup::Idle:
+        if (cache-&gt;group()-&gt;isObsolete())
+            return OBSOLETE;
+        if (cache != cache-&gt;group()-&gt;newestCache())
+            return UPDATEREADY;
+        return IDLE;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="lines">@@ -476,27 +485,30 @@
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::update()
</span><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();
</del><ins>+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache)
</span><span class="cx">         return false;
</span><del>-    cache-&gt;group()-&gt;update(m_documentLoader.frame(), ApplicationCacheUpdateWithoutBrowsingContext);
</del><ins>+    auto* frame = m_documentLoader.frame();
+    if (!frame)
+        return false;
+    cache-&gt;group()-&gt;update(*frame, ApplicationCacheUpdateWithoutBrowsingContext);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::swapCache()
</span><span class="cx"> {
</span><del>-    ApplicationCache* cache = applicationCache();
</del><ins>+    auto* cache = applicationCache();
</ins><span class="cx">     if (!cache)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // If the group of application caches to which cache belongs has the lifecycle status obsolete, unassociate document from cache.
</span><span class="cx">     if (cache-&gt;group()-&gt;isObsolete()) {
</span><del>-        cache-&gt;group()-&gt;disassociateDocumentLoader(&amp;m_documentLoader);
</del><ins>+        cache-&gt;group()-&gt;disassociateDocumentLoader(m_documentLoader);
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // If there is no newer cache, raise an INVALID_STATE_ERR exception.
</span><del>-    ApplicationCache* newestCache = cache-&gt;group()-&gt;newestCache();
</del><ins>+    auto* newestCache = cache-&gt;group()-&gt;newestCache();
</ins><span class="cx">     if (cache == newestCache)
</span><span class="cx">         return false;
</span><span class="cx">     
</span><span class="lines">@@ -508,14 +520,13 @@
</span><span class="cx"> 
</span><span class="cx"> void ApplicationCacheHost::abort()
</span><span class="cx"> {
</span><del>-    ApplicationCacheGroup* cacheGroup = candidateApplicationCacheGroup();
-    if (cacheGroup)
-        cacheGroup-&gt;abort(m_documentLoader.frame());
-    else {
-        ApplicationCache* cache = applicationCache();
-        if (cache)
-            cache-&gt;group()-&gt;abort(m_documentLoader.frame());
-    }
</del><ins>+    auto* frame = m_documentLoader.frame();
+    if (!frame)
+        return;
+    if (auto* cacheGroup = candidateApplicationCacheGroup())
+        cacheGroup-&gt;abort(*frame);
+    else if (auto* cache = applicationCache())
+        cache-&gt;group()-&gt;abort(*frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::isApplicationCacheEnabled()
</span><span class="lines">@@ -525,15 +536,12 @@
</span><span class="cx"> 
</span><span class="cx"> bool ApplicationCacheHost::isApplicationCacheBlockedForRequest(const ResourceRequest&amp; request)
</span><span class="cx"> {
</span><del>-    Frame* frame = m_documentLoader.frame();
</del><ins>+    auto* frame = m_documentLoader.frame();
</ins><span class="cx">     if (!frame)
</span><span class="cx">         return false;
</span><del>-
</del><span class="cx">     if (frame-&gt;isMainFrame())
</span><span class="cx">         return false;
</span><del>-
-    Ref&lt;SecurityOrigin&gt; origin(SecurityOrigin::create(request.url()));
-    return !origin.get().canAccessApplicationCache(frame-&gt;document()-&gt;topOrigin());
</del><ins>+    return !SecurityOrigin::create(request.url())-&gt;canAccessApplicationCache(frame-&gt;document()-&gt;topOrigin());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }  // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> /*
</span><del>- * Copyright (c) 2009, Google Inc.  All rights reserved.
- * 
</del><ins>+ * Copyright (c) 2009, Google Inc. All rights reserved.
+ * Copyright (c) 2017 Apple Inc. All rights reserved.
+ *
</ins><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions are
</span><span class="cx">  * met:
</span><span class="lines">@@ -30,165 +31,136 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;PlatformExportMacros.h&quot;
</del><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &lt;wtf/Deque.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-    class DOMApplicationCache;
-    class DocumentLoader;
-    class Frame;
-    class ResourceError;
-    class ResourceLoader;
-    class ResourceRequest;
-    class ResourceResponse;
-    class SharedBuffer;
-    class SubstituteData;
-    class ApplicationCache;
-    class ApplicationCacheGroup;
-    class ApplicationCacheResource;
-    class ApplicationCacheStorage;
</del><span class="cx"> 
</span><del>-    class ApplicationCacheHost {
-        WTF_MAKE_NONCOPYABLE(ApplicationCacheHost); WTF_MAKE_FAST_ALLOCATED;
-    public:
-        // The Status numeric values are specified in the HTML5 spec.
-        enum Status {
-            UNCACHED = 0,
-            IDLE = 1,
-            CHECKING = 2,
-            DOWNLOADING = 3,
-            UPDATEREADY = 4,
-            OBSOLETE = 5
-        };
</del><ins>+class ApplicationCache;
+class ApplicationCacheGroup;
+class ApplicationCacheResource;
+class ApplicationCacheStorage;
+class DOMApplicationCache;
+class DocumentLoader;
+class Frame;
+class ResourceError;
+class ResourceLoader;
+class ResourceRequest;
+class ResourceResponse;
+class SharedBuffer;
+class SubstituteData;
</ins><span class="cx"> 
</span><del>-        enum EventID {
-            CHECKING_EVENT = 0,
-            ERROR_EVENT,
-            NOUPDATE_EVENT,
-            DOWNLOADING_EVENT,
-            PROGRESS_EVENT,
-            UPDATEREADY_EVENT,
-            CACHED_EVENT,
-            OBSOLETE_EVENT  // Must remain the last value, this is used to size arrays.
-        };
</del><ins>+class ApplicationCacheHost {
+    WTF_MAKE_NONCOPYABLE(ApplicationCacheHost); WTF_MAKE_FAST_ALLOCATED;
+public:
+    // The Status numeric values are specified in the HTML5 spec.
+    enum Status {
+        UNCACHED = 0,
+        IDLE = 1,
+        CHECKING = 2,
+        DOWNLOADING = 3,
+        UPDATEREADY = 4,
+        OBSOLETE = 5
+    };
</ins><span class="cx"> 
</span><del>-        struct CacheInfo {
-            CacheInfo(const URL&amp; manifest, double creationTime, double updateTime, long long size)
-                : m_manifest(manifest)
-                , m_creationTime(creationTime)
-                , m_updateTime(updateTime)
-                , m_size(size) { }
-            URL m_manifest;
-            double m_creationTime;
-            double m_updateTime;
-            long long m_size;
-        };
</del><ins>+    struct CacheInfo {
+        URL manifest;
+        double creationTime;
+        double updateTime;
+        long long size;
+    };
</ins><span class="cx"> 
</span><del>-        struct ResourceInfo {
-            ResourceInfo(const URL&amp; resource, bool isMaster, bool isManifest, bool isFallback, bool isForeign, bool isExplicit, long long size)
-                : m_resource(resource)
-                , m_isMaster(isMaster)
-                , m_isManifest(isManifest)
-                , m_isFallback(isFallback)
-                , m_isForeign(isForeign)
-                , m_isExplicit(isExplicit)
-                , m_size(size) { }
-            URL m_resource;
-            bool m_isMaster;
-            bool m_isManifest;
-            bool m_isFallback;
-            bool m_isForeign;
-            bool m_isExplicit;
-            long long m_size;
-        };
</del><ins>+    struct ResourceInfo {
+        URL resource;
+        bool isMaster;
+        bool isManifest;
+        bool isFallback;
+        bool isForeign;
+        bool isExplicit;
+        long long size;
+    };
</ins><span class="cx"> 
</span><del>-        typedef Vector&lt;ResourceInfo&gt; ResourceInfoList;
</del><ins>+    explicit ApplicationCacheHost(DocumentLoader&amp;);
+    ~ApplicationCacheHost();
</ins><span class="cx"> 
</span><del>-        explicit ApplicationCacheHost(DocumentLoader&amp;);
-        ~ApplicationCacheHost();
</del><ins>+    static URL createFileURL(const String&amp;);
</ins><span class="cx"> 
</span><del>-        static URL createFileURL(const String&amp;);
</del><ins>+    void selectCacheWithoutManifest();
+    void selectCacheWithManifest(const URL&amp; manifestURL);
</ins><span class="cx"> 
</span><del>-        void selectCacheWithoutManifest();
-        void selectCacheWithManifest(const URL&amp; manifestURL);
</del><ins>+    void maybeLoadMainResource(ResourceRequest&amp;, SubstituteData&amp;);
+    void maybeLoadMainResourceForRedirect(ResourceRequest&amp;, SubstituteData&amp;);
+    bool maybeLoadFallbackForMainResponse(const ResourceRequest&amp;, const ResourceResponse&amp;);
+    void mainResourceDataReceived(const char* data, int length, long long encodedDataLength, bool allAtOnce);
+    void finishedLoadingMainResource();
+    void failedLoadingMainResource();
</ins><span class="cx"> 
</span><del>-        void maybeLoadMainResource(ResourceRequest&amp;, SubstituteData&amp;);
-        void maybeLoadMainResourceForRedirect(ResourceRequest&amp;, SubstituteData&amp;);
-        bool maybeLoadFallbackForMainResponse(const ResourceRequest&amp;, const ResourceResponse&amp;);
-        void mainResourceDataReceived(const char* data, int length, long long encodedDataLength, bool allAtOnce);
-        void finishedLoadingMainResource();
-        void failedLoadingMainResource();
</del><ins>+    WEBCORE_EXPORT bool maybeLoadResource(ResourceLoader&amp;, const ResourceRequest&amp;, const URL&amp; originalURL);
+    WEBCORE_EXPORT bool maybeLoadFallbackForRedirect(ResourceLoader*, ResourceRequest&amp;, const ResourceResponse&amp;);
+    WEBCORE_EXPORT bool maybeLoadFallbackForResponse(ResourceLoader*, const ResourceResponse&amp;);
+    WEBCORE_EXPORT bool maybeLoadFallbackForError(ResourceLoader*, const ResourceError&amp;);
</ins><span class="cx"> 
</span><del>-        WEBCORE_EXPORT bool maybeLoadResource(ResourceLoader&amp;, const ResourceRequest&amp;, const URL&amp; originalURL);
-        WEBCORE_EXPORT bool maybeLoadFallbackForRedirect(ResourceLoader*, ResourceRequest&amp;, const ResourceResponse&amp;);
-        WEBCORE_EXPORT bool maybeLoadFallbackForResponse(ResourceLoader*, const ResourceResponse&amp;);
-        WEBCORE_EXPORT bool maybeLoadFallbackForError(ResourceLoader*, const ResourceError&amp;);
</del><ins>+    bool maybeLoadSynchronously(ResourceRequest&amp;, ResourceError&amp;, ResourceResponse&amp;, RefPtr&lt;SharedBuffer&gt;&amp;);
+    void maybeLoadFallbackSynchronously(const ResourceRequest&amp;, ResourceError&amp;, ResourceResponse&amp;, RefPtr&lt;SharedBuffer&gt;&amp;);
</ins><span class="cx"> 
</span><del>-        bool maybeLoadSynchronously(ResourceRequest&amp;, ResourceError&amp;, ResourceResponse&amp;, RefPtr&lt;SharedBuffer&gt;&amp;);
-        void maybeLoadFallbackSynchronously(const ResourceRequest&amp;, ResourceError&amp;, ResourceResponse&amp;, RefPtr&lt;SharedBuffer&gt;&amp;);
</del><ins>+    bool canCacheInPageCache();
</ins><span class="cx"> 
</span><del>-        bool canCacheInPageCache();
</del><ins>+    Status status() const;
+    bool update();
+    bool swapCache();
+    void abort();
</ins><span class="cx"> 
</span><del>-        Status status() const;  
-        bool update();
-        bool swapCache();
-        void abort();
</del><ins>+    void setDOMApplicationCache(DOMApplicationCache*);
+    void notifyDOMApplicationCache(const AtomicString&amp; eventType, int progressTotal, int progressDone);
</ins><span class="cx"> 
</span><del>-        void setDOMApplicationCache(DOMApplicationCache*);
-        void notifyDOMApplicationCache(EventID, int progressTotal, int progressDone);
</del><ins>+    void stopLoadingInFrame(Frame&amp;);
</ins><span class="cx"> 
</span><del>-        void stopLoadingInFrame(Frame*);
</del><ins>+    void stopDeferringEvents(); // Also raises the events that have been queued up.
</ins><span class="cx"> 
</span><del>-        void stopDeferringEvents(); // Also raises the events that have been queued up.
</del><ins>+    Vector&lt;ResourceInfo&gt; resourceList();
+    CacheInfo applicationCacheInfo();
</ins><span class="cx"> 
</span><del>-        void fillResourceList(ResourceInfoList*);
-        CacheInfo applicationCacheInfo();
</del><ins>+    bool shouldLoadResourceFromApplicationCache(const ResourceRequest&amp;, ApplicationCacheResource*&amp;);
+    bool getApplicationCacheFallbackResource(const ResourceRequest&amp;, ApplicationCacheResource*&amp;, ApplicationCache* = nullptr);
</ins><span class="cx"> 
</span><del>-        bool shouldLoadResourceFromApplicationCache(const ResourceRequest&amp;, ApplicationCacheResource*&amp;);
-        bool getApplicationCacheFallbackResource(const ResourceRequest&amp;, ApplicationCacheResource*&amp;, ApplicationCache* = nullptr);
</del><ins>+private:
+    friend class ApplicationCacheGroup;
</ins><span class="cx"> 
</span><del>-    private:
-        bool isApplicationCacheEnabled();
-        bool isApplicationCacheBlockedForRequest(const ResourceRequest&amp;);
</del><ins>+    struct DeferredEvent {
+        AtomicString eventType;
+        int progressTotal;
+        int progressDone;
+    };
</ins><span class="cx"> 
</span><del>-        struct DeferredEvent {
-            EventID eventID;
-            int progressTotal;
-            int progressDone;
-            DeferredEvent(EventID id, int total, int done) : eventID(id), progressTotal(total), progressDone(done) { }
-        };
</del><ins>+    bool isApplicationCacheEnabled();
+    bool isApplicationCacheBlockedForRequest(const ResourceRequest&amp;);
</ins><span class="cx"> 
</span><del>-        DOMApplicationCache* m_domApplicationCache;
-        DocumentLoader&amp; m_documentLoader;
-        bool m_defersEvents; // Events are deferred until after document onload.
-        Vector&lt;DeferredEvent&gt; m_deferredEvents;
</del><ins>+    void dispatchDOMEvent(const AtomicString&amp; eventType, int progressTotal, int progressDone);
</ins><span class="cx"> 
</span><del>-        void dispatchDOMEvent(EventID, int progressTotal, int progressDone);
</del><ins>+    bool scheduleLoadFallbackResourceFromApplicationCache(ResourceLoader*, ApplicationCache* = nullptr);
+    void setCandidateApplicationCacheGroup(ApplicationCacheGroup*);
+    ApplicationCacheGroup* candidateApplicationCacheGroup() const { return m_candidateApplicationCacheGroup; }
+    void setApplicationCache(RefPtr&lt;ApplicationCache&gt;&amp;&amp;);
+    ApplicationCache* applicationCache() const { return m_applicationCache.get(); }
+    ApplicationCache* mainResourceApplicationCache() const { return m_mainResourceApplicationCache.get(); }
+    bool maybeLoadFallbackForMainError(const ResourceRequest&amp;, const ResourceError&amp;);
</ins><span class="cx"> 
</span><del>-        friend class ApplicationCacheGroup;
-        friend class ApplicationCacheStorage;
</del><ins>+    DOMApplicationCache* m_domApplicationCache { nullptr };
+    DocumentLoader&amp; m_documentLoader;
</ins><span class="cx"> 
</span><del>-        bool scheduleLoadFallbackResourceFromApplicationCache(ResourceLoader*, ApplicationCache* = nullptr);
-        void setCandidateApplicationCacheGroup(ApplicationCacheGroup* group);
-        ApplicationCacheGroup* candidateApplicationCacheGroup() const { return m_candidateApplicationCacheGroup; }
-        void setApplicationCache(PassRefPtr&lt;ApplicationCache&gt; applicationCache);
-        ApplicationCache* applicationCache() const { return m_applicationCache.get(); }
-        ApplicationCache* mainResourceApplicationCache() const { return m_mainResourceApplicationCache.get(); }
-        bool maybeLoadFallbackForMainError(const ResourceRequest&amp;, const ResourceError&amp;);
</del><ins>+    bool m_defersEvents { true }; // Events are deferred until after document onload.
+    Vector&lt;DeferredEvent&gt; m_deferredEvents;
</ins><span class="cx"> 
</span><del>-        // The application cache that the document loader is associated with (if any).
-        RefPtr&lt;ApplicationCache&gt; m_applicationCache;
</del><ins>+    // The application cache that the document loader is associated with (if any).
+    RefPtr&lt;ApplicationCache&gt; m_applicationCache;
</ins><span class="cx"> 
</span><del>-        // Before an application cache has finished loading, this will be the candidate application
-        // group that the document loader is associated with.
-        ApplicationCacheGroup* m_candidateApplicationCacheGroup;
</del><ins>+    // Before an application cache has finished loading, this will be the candidate application
+    // group that the document loader is associated with.
+    ApplicationCacheGroup* m_candidateApplicationCacheGroup { nullptr };
</ins><span class="cx"> 
</span><del>-        // This is the application cache the main resource was loaded from (if any).
-        RefPtr&lt;ApplicationCache&gt; m_mainResourceApplicationCache;
-    };
</del><ins>+    // This is the application cache the main resource was loaded from (if any).
+    RefPtr&lt;ApplicationCache&gt; m_mainResourceApplicationCache;
+};
</ins><span class="cx"> 
</span><span class="cx"> }  // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheStoragecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -126,12 +126,10 @@
</span><span class="cx">     if (!cache)
</span><span class="cx">         return nullptr;
</span><span class="cx">         
</span><del>-    ApplicationCacheGroup* group = new ApplicationCacheGroup(*this, manifestURL);
-      
-    group-&gt;setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
-    group-&gt;setNewestCache(WTFMove(cache));
-
-    return group;
</del><ins>+    auto&amp; group = *new ApplicationCacheGroup(*this, manifestURL);
+    group.setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
+    group.setNewestCache(cache.releaseNonNull());
+    return &amp;group;
</ins><span class="cx"> }    
</span><span class="cx"> 
</span><span class="cx"> ApplicationCacheGroup* ApplicationCacheStorage::findOrCreateCacheGroup(const URL&amp; manifestURL)
</span><span class="lines">@@ -138,8 +136,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!manifestURL.hasFragmentIdentifier());
</span><span class="cx"> 
</span><del>-    CacheGroupMap::AddResult result = m_cachesInMemory.add(manifestURL, nullptr);
-    
</del><ins>+    auto result = m_cachesInMemory.add(manifestURL, nullptr);
</ins><span class="cx">     if (!result.isNewEntry) {
</span><span class="cx">         ASSERT(result.iterator-&gt;value);
</span><span class="cx">         return result.iterator-&gt;value;
</span><span class="lines">@@ -146,7 +143,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Look up the group in the database
</span><del>-    ApplicationCacheGroup* group = loadCacheGroup(manifestURL);
</del><ins>+    auto* group = loadCacheGroup(manifestURL);
</ins><span class="cx">     
</span><span class="cx">     // If the group was not found we need to create it
</span><span class="cx">     if (!group) {
</span><span class="lines">@@ -153,9 +150,8 @@
</span><span class="cx">         group = new ApplicationCacheGroup(*this, manifestURL);
</span><span class="cx">         m_cacheHostSet.add(urlHostHash(manifestURL));
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     result.iterator-&gt;value = group;
</span><del>-    
</del><span class="cx">     return group;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -244,20 +240,18 @@
</span><span class="cx">         if (!cache)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        ApplicationCacheResource* resource = cache-&gt;resourceForURL(url);
</del><ins>+        auto* resource = cache-&gt;resourceForURL(url);
</ins><span class="cx">         if (!resource)
</span><span class="cx">             continue;
</span><span class="cx">         if (resource-&gt;type() &amp; ApplicationCacheResource::Foreign)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        ApplicationCacheGroup* group = new ApplicationCacheGroup(*this, manifestURL);
-        
-        group-&gt;setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
-        group-&gt;setNewestCache(WTFMove(cache));
-        
-        m_cachesInMemory.set(group-&gt;manifestURL(), group);
-        
-        return group;
</del><ins>+        auto&amp; group = *new ApplicationCacheGroup(*this, manifestURL);
+        group.setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
+        group.setNewestCache(cache.releaseNonNull());
+        m_cachesInMemory.set(group.manifestURL(), &amp;group);
+
+        return &amp;group;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (result != SQLITE_DONE)
</span><span class="lines">@@ -320,14 +314,13 @@
</span><span class="cx">         if (cache-&gt;resourceForURL(fallbackURL)-&gt;type() &amp; ApplicationCacheResource::Foreign)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        ApplicationCacheGroup* group = new ApplicationCacheGroup(*this, manifestURL);
-        
-        group-&gt;setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
-        group-&gt;setNewestCache(WTFMove(cache));
-        
-        m_cachesInMemory.set(group-&gt;manifestURL(), group);
-        
-        return group;
</del><ins>+        auto&amp; group = *new ApplicationCacheGroup(*this, manifestURL);
+        group.setStorageID(static_cast&lt;unsigned&gt;(statement.getColumnInt64(0)));
+        group.setNewestCache(cache.releaseNonNull());
+
+        m_cachesInMemory.set(group.manifestURL(), &amp;group);
+
+        return &amp;group;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (result != SQLITE_DONE)
</span><span class="lines">@@ -336,33 +329,33 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheStorage::cacheGroupDestroyed(ApplicationCacheGroup* group)
</del><ins>+void ApplicationCacheStorage::cacheGroupDestroyed(ApplicationCacheGroup&amp; group)
</ins><span class="cx"> {
</span><del>-    if (group-&gt;isObsolete()) {
-        ASSERT(!group-&gt;storageID());
-        ASSERT(m_cachesInMemory.get(group-&gt;manifestURL()) != group);
</del><ins>+    if (group.isObsolete()) {
+        ASSERT(!group.storageID());
+        ASSERT(m_cachesInMemory.get(group.manifestURL()) != &amp;group);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT(m_cachesInMemory.get(group-&gt;manifestURL()) == group);
</del><ins>+    ASSERT(m_cachesInMemory.get(group.manifestURL()) == &amp;group);
</ins><span class="cx"> 
</span><del>-    m_cachesInMemory.remove(group-&gt;manifestURL());
</del><ins>+    m_cachesInMemory.remove(group.manifestURL());
</ins><span class="cx">     
</span><span class="cx">     // If the cache group is half-created, we don't want it in the saved set (as it is not stored in database).
</span><del>-    if (!group-&gt;storageID())
-        m_cacheHostSet.remove(urlHostHash(group-&gt;manifestURL()));
</del><ins>+    if (!group.storageID())
+        m_cacheHostSet.remove(urlHostHash(group.manifestURL()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ApplicationCacheStorage::cacheGroupMadeObsolete(ApplicationCacheGroup* group)
</del><ins>+void ApplicationCacheStorage::cacheGroupMadeObsolete(ApplicationCacheGroup&amp; group)
</ins><span class="cx"> {
</span><del>-    ASSERT(m_cachesInMemory.get(group-&gt;manifestURL()) == group);
-    ASSERT(m_cacheHostSet.contains(urlHostHash(group-&gt;manifestURL())));
</del><ins>+    ASSERT(m_cachesInMemory.get(group.manifestURL()) == &amp;group);
+    ASSERT(m_cacheHostSet.contains(urlHostHash(group.manifestURL())));
</ins><span class="cx"> 
</span><del>-    if (ApplicationCache* newestCache = group-&gt;newestCache())
</del><ins>+    if (auto* newestCache = group.newestCache())
</ins><span class="cx">         remove(newestCache);
</span><span class="cx"> 
</span><del>-    m_cachesInMemory.remove(group-&gt;manifestURL());
-    m_cacheHostSet.remove(urlHostHash(group-&gt;manifestURL()));
</del><ins>+    m_cachesInMemory.remove(group.manifestURL());
+    m_cacheHostSet.remove(urlHostHash(group.manifestURL()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const String&amp; ApplicationCacheStorage::cacheDirectory() const
</span><span class="lines">@@ -996,7 +989,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ApplicationCacheStorage::storeNewestCache(ApplicationCacheGroup* group, ApplicationCache* oldCache, FailureReason&amp; failureReason)
</del><ins>+bool ApplicationCacheStorage::storeNewestCache(ApplicationCacheGroup&amp; group, ApplicationCache* oldCache, FailureReason&amp; failureReason)
</ins><span class="cx"> {
</span><span class="cx">     openDatabase(true);
</span><span class="cx"> 
</span><span class="lines">@@ -1012,15 +1005,15 @@
</span><span class="cx"> 
</span><span class="cx">     // Check if this would reach the per-origin quota.
</span><span class="cx">     int64_t totalSpaceNeededIgnored;
</span><del>-    if (!checkOriginQuota(group, oldCache, group-&gt;newestCache(), totalSpaceNeededIgnored)) {
</del><ins>+    if (!checkOriginQuota(&amp;group, oldCache, group.newestCache(), totalSpaceNeededIgnored)) {
</ins><span class="cx">         failureReason = OriginQuotaReached;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     GroupStorageIDJournal groupStorageIDJournal;
</span><del>-    if (!group-&gt;storageID()) {
</del><ins>+    if (!group.storageID()) {
</ins><span class="cx">         // Store the group
</span><del>-        if (!store(group, &amp;groupStorageIDJournal)) {
</del><ins>+        if (!store(&amp;group, &amp;groupStorageIDJournal)) {
</ins><span class="cx">             checkForMaxSizeReached();
</span><span class="cx">             failureReason = isMaximumSizeReached() ? TotalQuotaReached : DiskOrOperationFailure;
</span><span class="cx">             return false;
</span><span class="lines">@@ -1027,9 +1020,9 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    ASSERT(group-&gt;newestCache());
-    ASSERT(!group-&gt;isObsolete());
-    ASSERT(!group-&gt;newestCache()-&gt;storageID());
</del><ins>+    ASSERT(group.newestCache());
+    ASSERT(!group.isObsolete());
+    ASSERT(!group.newestCache()-&gt;storageID());
</ins><span class="cx">     
</span><span class="cx">     // Log the storageID changes to the in-memory resource objects. The journal
</span><span class="cx">     // object will roll them back automatically in case a database operation
</span><span class="lines">@@ -1037,7 +1030,7 @@
</span><span class="cx">     ResourceStorageIDJournal resourceStorageIDJournal;
</span><span class="cx"> 
</span><span class="cx">     // Store the newest cache
</span><del>-    if (!store(group-&gt;newestCache(), &amp;resourceStorageIDJournal)) {
</del><ins>+    if (!store(group.newestCache(), &amp;resourceStorageIDJournal)) {
</ins><span class="cx">         checkForMaxSizeReached();
</span><span class="cx">         failureReason = isMaximumSizeReached() ? TotalQuotaReached : DiskOrOperationFailure;
</span><span class="cx">         return false;
</span><span class="lines">@@ -1051,8 +1044,8 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    statement.bindInt64(1, group-&gt;newestCache()-&gt;storageID());
-    statement.bindInt64(2, group-&gt;storageID());
</del><ins>+    statement.bindInt64(1, group.newestCache()-&gt;storageID());
+    statement.bindInt64(2, group.storageID());
</ins><span class="cx">     
</span><span class="cx">     if (!executeStatement(statement)) {
</span><span class="cx">         failureReason = DiskOrOperationFailure;
</span><span class="lines">@@ -1065,22 +1058,24 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ApplicationCacheStorage::storeNewestCache(ApplicationCacheGroup* group)
</del><ins>+bool ApplicationCacheStorage::storeNewestCache(ApplicationCacheGroup&amp; group)
</ins><span class="cx"> {
</span><span class="cx">     // Ignore the reason for failing, just attempt the store.
</span><span class="cx">     FailureReason ignoredFailureReason;
</span><del>-    return storeNewestCache(group, 0, ignoredFailureReason);
</del><ins>+    return storeNewestCache(group, nullptr, ignoredFailureReason);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-template &lt;typename CharacterType&gt;
-static inline void parseHeader(const CharacterType* header, size_t headerLength, ResourceResponse&amp; response)
</del><ins>+template&lt;typename CharacterType&gt;
+static inline void parseHeader(const CharacterType* header, unsigned headerLength, ResourceResponse&amp; response)
</ins><span class="cx"> {
</span><del>-    size_t pos = find(header, headerLength, ':');
-    ASSERT(pos != notFound);
-    
-    String headerName = AtomicString(header, pos);
-    String headerValue = String(header + pos + 1, headerLength - pos - 1);
-    
</del><ins>+    ASSERT(find(header, headerLength, ':') != notFound);
+    unsigned colonPosition = find(header, headerLength, ':');
+
+    // Save memory by putting the header names into atomic strings so each is stored only once,
+    // even though the setHTTPHeaderField function does not require an atomic string.
+    AtomicString headerName { header, colonPosition };
+    String headerValue { header + colonPosition + 1, headerLength - colonPosition - 1 };
+
</ins><span class="cx">     response.setHTTPHeaderField(headerName, headerValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1107,7 +1102,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-PassRefPtr&lt;ApplicationCache&gt; ApplicationCacheStorage::loadCache(unsigned storageID)
</del><ins>+RefPtr&lt;ApplicationCache&gt; ApplicationCacheStorage::loadCache(unsigned storageID)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(SQLiteDatabaseTracker::hasTransactionInProgress());
</span><span class="cx">     SQLiteStatement cacheStatement(m_database,
</span><span class="lines">@@ -1408,10 +1403,11 @@
</span><span class="cx">     SQLiteTransactionInProgressAutoCounter transactionCounter;
</span><span class="cx"> 
</span><span class="cx">     SQLiteTransaction deleteTransaction(m_database);
</span><ins>+
</ins><span class="cx">     // Check to see if the group is in memory.
</span><del>-    ApplicationCacheGroup* group = m_cachesInMemory.get(manifestURL);
</del><ins>+    auto* group = m_cachesInMemory.get(manifestURL);
</ins><span class="cx">     if (group)
</span><del>-        cacheGroupMadeObsolete(group);
</del><ins>+        cacheGroupMadeObsolete(*group);
</ins><span class="cx">     else {
</span><span class="cx">         // The cache group is not in memory, so remove it from the disk.
</span><span class="cx">         openDatabase(false);
</span><span class="lines">@@ -1424,9 +1420,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     deleteTransaction.commit();
</span><del>-    
</del><ins>+
</ins><span class="cx">     checkForDeletedResources();
</span><del>-    
</del><ins>+
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheApplicationCacheStorageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2010, 2011 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> class URL;
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class SharedBuffer;
</span><del>-template &lt;class T&gt; class StorageIDJournal;
</del><ins>+template&lt;typename&gt; class StorageIDJournal;
</ins><span class="cx"> 
</span><span class="cx"> class ApplicationCacheStorage : public RefCounted&lt;ApplicationCacheStorage&gt; {
</span><span class="cx"> public:
</span><span class="lines">@@ -73,19 +73,19 @@
</span><span class="cx"> 
</span><span class="cx">     ApplicationCacheGroup* findOrCreateCacheGroup(const URL&amp; manifestURL);
</span><span class="cx">     ApplicationCacheGroup* findInMemoryCacheGroup(const URL&amp; manifestURL) const;
</span><del>-    void cacheGroupDestroyed(ApplicationCacheGroup*);
-    void cacheGroupMadeObsolete(ApplicationCacheGroup*);
-        
-    bool storeNewestCache(ApplicationCacheGroup*, ApplicationCache* oldCache, FailureReason&amp; failureReason);
-    bool storeNewestCache(ApplicationCacheGroup*); // Updates the cache group, but doesn't remove old cache.
</del><ins>+    void cacheGroupDestroyed(ApplicationCacheGroup&amp;);
+    void cacheGroupMadeObsolete(ApplicationCacheGroup&amp;);
+
+    bool storeNewestCache(ApplicationCacheGroup&amp;, ApplicationCache* oldCache, FailureReason&amp;);
+    bool storeNewestCache(ApplicationCacheGroup&amp;); // Updates the cache group, but doesn't remove old cache.
</ins><span class="cx">     bool store(ApplicationCacheResource*, ApplicationCache*);
</span><span class="cx">     bool storeUpdatedType(ApplicationCacheResource*, ApplicationCache*);
</span><span class="cx"> 
</span><span class="cx">     // Removes the group if the cache to be removed is the newest one (so, storeNewestCache() needs to be called beforehand when updating).
</span><span class="cx">     void remove(ApplicationCache*);
</span><del>-    
</del><ins>+
</ins><span class="cx">     WEBCORE_EXPORT void empty();
</span><del>-    
</del><ins>+
</ins><span class="cx">     bool getManifestURLs(Vector&lt;URL&gt;* urls);
</span><span class="cx">     bool cacheGroupSize(const String&amp; manifestURL, int64_t* size);
</span><span class="cx">     bool deleteCacheGroup(const String&amp; manifestURL);
</span><span class="lines">@@ -105,14 +105,15 @@
</span><span class="cx"> 
</span><span class="cx">     static int64_t unknownQuota() { return -1; }
</span><span class="cx">     static int64_t noQuota() { return std::numeric_limits&lt;int64_t&gt;::max(); }
</span><ins>+
</ins><span class="cx"> private:
</span><span class="cx">     ApplicationCacheStorage(const String&amp; cacheDirectory, const String&amp; flatFileSubdirectoryName);
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;ApplicationCache&gt; loadCache(unsigned storageID);
</del><ins>+    RefPtr&lt;ApplicationCache&gt; loadCache(unsigned storageID);
</ins><span class="cx">     ApplicationCacheGroup* loadCacheGroup(const URL&amp; manifestURL);
</span><span class="cx">     
</span><del>-    typedef StorageIDJournal&lt;ApplicationCacheResource&gt; ResourceStorageIDJournal;
-    typedef StorageIDJournal&lt;ApplicationCacheGroup&gt; GroupStorageIDJournal;
</del><ins>+    using ResourceStorageIDJournal = StorageIDJournal&lt;ApplicationCacheResource&gt;;
+    using GroupStorageIDJournal = StorageIDJournal&lt;ApplicationCacheGroup&gt;;
</ins><span class="cx"> 
</span><span class="cx">     bool store(ApplicationCacheGroup*, GroupStorageIDJournal*);
</span><span class="cx">     bool store(ApplicationCache*, ResourceStorageIDJournal*);
</span><span class="lines">@@ -152,8 +153,7 @@
</span><span class="cx">     // we keep a hash set of the hosts of the manifest URLs of all non-obsolete cache groups.
</span><span class="cx">     HashCountedSet&lt;unsigned, AlreadyHashed&gt; m_cacheHostSet;
</span><span class="cx">     
</span><del>-    typedef HashMap&lt;String, ApplicationCacheGroup*&gt; CacheGroupMap;
-    CacheGroupMap m_cachesInMemory; // Excludes obsolete cache groups.
</del><ins>+    HashMap&lt;String, ApplicationCacheGroup*&gt; m_cachesInMemory; // Excludes obsolete cache groups.
</ins><span class="cx"> 
</span><span class="cx">     friend class WTF::NeverDestroyed&lt;ApplicationCacheStorage&gt;;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheDOMApplicationCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,27 +29,22 @@
</span><span class="cx"> #include &quot;ApplicationCacheHost.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><del>-#include &quot;Event.h&quot;
-#include &quot;EventListener.h&quot;
-#include &quot;EventNames.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><del>-#include &quot;FrameLoader.h&quot;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DOMApplicationCache::DOMApplicationCache(Frame* frame)
-    : DOMWindowProperty(frame)
</del><ins>+DOMApplicationCache::DOMApplicationCache(Frame&amp; frame)
+    : DOMWindowProperty(&amp;frame)
</ins><span class="cx"> {
</span><del>-    ApplicationCacheHost* cacheHost = applicationCacheHost();
-    if (cacheHost)
-        cacheHost-&gt;setDOMApplicationCache(this);
</del><ins>+    if (auto* host = applicationCacheHost())
+        host-&gt;setDOMApplicationCache(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DOMApplicationCache::disconnectFrameForDocumentSuspension()
</span><span class="cx"> {
</span><del>-    if (ApplicationCacheHost* cacheHost = applicationCacheHost())
-        cacheHost-&gt;setDOMApplicationCache(nullptr);
</del><ins>+    if (auto* host = applicationCacheHost())
+        host-&gt;setDOMApplicationCache(nullptr);
</ins><span class="cx">     DOMWindowProperty::disconnectFrameForDocumentSuspension();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -56,36 +51,39 @@
</span><span class="cx"> void DOMApplicationCache::reconnectFrameFromDocumentSuspension(Frame* frame)
</span><span class="cx"> {
</span><span class="cx">     DOMWindowProperty::reconnectFrameFromDocumentSuspension(frame);
</span><del>-    if (ApplicationCacheHost* cacheHost = applicationCacheHost())
-        cacheHost-&gt;setDOMApplicationCache(this);
</del><ins>+    if (auto* host = applicationCacheHost())
+        host-&gt;setDOMApplicationCache(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DOMApplicationCache::willDestroyGlobalObjectInFrame()
</span><span class="cx"> {
</span><del>-    if (ApplicationCacheHost* cacheHost = applicationCacheHost())
-        cacheHost-&gt;setDOMApplicationCache(nullptr);
</del><ins>+    if (auto* host = applicationCacheHost())
+        host-&gt;setDOMApplicationCache(nullptr);
</ins><span class="cx">     DOMWindowProperty::willDestroyGlobalObjectInFrame();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ApplicationCacheHost* DOMApplicationCache::applicationCacheHost() const
</span><span class="cx"> {
</span><del>-    if (!m_frame || !m_frame-&gt;loader().documentLoader())
</del><ins>+    if (!m_frame)
</ins><span class="cx">         return nullptr;
</span><del>-    return m_frame-&gt;loader().documentLoader()-&gt;applicationCacheHost();
</del><ins>+    auto* documentLoader = m_frame-&gt;loader().documentLoader();
+    if (!documentLoader)
+        return nullptr;
+    return &amp;documentLoader-&gt;applicationCacheHost();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned short DOMApplicationCache::status() const
</span><span class="cx"> {
</span><del>-    ApplicationCacheHost* cacheHost = applicationCacheHost();
-    if (!cacheHost)
</del><ins>+    auto* host = applicationCacheHost();
+    if (!host)
</ins><span class="cx">         return ApplicationCacheHost::UNCACHED;
</span><del>-    return cacheHost-&gt;status();
</del><ins>+    return host-&gt;status();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; DOMApplicationCache::update()
</span><span class="cx"> {
</span><del>-    auto* cacheHost = applicationCacheHost();
-    if (!cacheHost || !cacheHost-&gt;update())
</del><ins>+    auto* host = applicationCacheHost();
+    if (!host || !host-&gt;update())
</ins><span class="cx">         return Exception { INVALID_STATE_ERR };
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="lines">@@ -92,8 +90,8 @@
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;void&gt; DOMApplicationCache::swapCache()
</span><span class="cx"> {
</span><del>-    auto* cacheHost = applicationCacheHost();
-    if (!cacheHost || !cacheHost-&gt;swapCache())
</del><ins>+    auto* host = applicationCacheHost();
+    if (!host || !host-&gt;swapCache())
</ins><span class="cx">         return Exception { INVALID_STATE_ERR };
</span><span class="cx">     return { };
</span><span class="cx"> }
</span><span class="lines">@@ -100,40 +98,15 @@
</span><span class="cx"> 
</span><span class="cx"> void DOMApplicationCache::abort()
</span><span class="cx"> {
</span><del>-    ApplicationCacheHost* cacheHost = applicationCacheHost();
-    if (cacheHost)
-        cacheHost-&gt;abort();
</del><ins>+    if (auto* host = applicationCacheHost())
+        host-&gt;abort();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ScriptExecutionContext* DOMApplicationCache::scriptExecutionContext() const
</span><span class="cx"> {
</span><del>-    if (m_frame)
-        return m_frame-&gt;document();
-    return nullptr;
</del><ins>+    if (!m_frame)
+        return nullptr;
+    return m_frame-&gt;document();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-const AtomicString&amp; DOMApplicationCache::toEventType(ApplicationCacheHost::EventID id)
-{
-    switch (id) {
-    case ApplicationCacheHost::CHECKING_EVENT:
-        return eventNames().checkingEvent;
-    case ApplicationCacheHost::ERROR_EVENT:
-        return eventNames().errorEvent;
-    case ApplicationCacheHost::NOUPDATE_EVENT:
-        return eventNames().noupdateEvent;
-    case ApplicationCacheHost::DOWNLOADING_EVENT:
-        return eventNames().downloadingEvent;
-    case ApplicationCacheHost::PROGRESS_EVENT:
-        return eventNames().progressEvent;
-    case ApplicationCacheHost::UPDATEREADY_EVENT:
-        return eventNames().updatereadyEvent;
-    case ApplicationCacheHost::CACHED_EVENT:
-        return eventNames().cachedEvent;
-    case ApplicationCacheHost::OBSOLETE_EVENT:            
-        return eventNames().obsoleteEvent;
-    }
-    ASSERT_NOT_REACHED();
-    return eventNames().errorEvent;
-}
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheDOMApplicationCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -25,46 +25,39 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;ApplicationCacheHost.h&quot;
</del><span class="cx"> #include &quot;DOMWindowProperty.h&quot;
</span><span class="cx"> #include &quot;EventTarget.h&quot;
</span><del>-#include &quot;ExceptionOr.h&quot;
-#include &quot;ScriptWrappable.h&quot;
-#include &lt;wtf/HashMap.h&gt;
-#include &lt;wtf/text/AtomicStringHash.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class ApplicationCacheHost;
</ins><span class="cx"> class Frame;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class DOMApplicationCache final : public RefCounted&lt;DOMApplicationCache&gt;, public EventTargetWithInlineData, public DOMWindowProperty {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;DOMApplicationCache&gt; create(Frame* frame) { return adoptRef(*new DOMApplicationCache(frame)); }
</del><ins>+    static Ref&lt;DOMApplicationCache&gt; create(Frame&amp; frame) { return adoptRef(*new DOMApplicationCache(frame)); }
</ins><span class="cx">     virtual ~DOMApplicationCache() { ASSERT(!m_frame); }
</span><span class="cx"> 
</span><del>-    void disconnectFrameForDocumentSuspension() override;
-    void reconnectFrameFromDocumentSuspension(Frame*) override;
-    void willDestroyGlobalObjectInFrame() override;
-
</del><span class="cx">     unsigned short status() const;
</span><span class="cx">     ExceptionOr&lt;void&gt; update();
</span><span class="cx">     ExceptionOr&lt;void&gt; swapCache();
</span><span class="cx">     void abort();
</span><span class="cx"> 
</span><del>-    using RefCounted&lt;DOMApplicationCache&gt;::ref;
-    using RefCounted&lt;DOMApplicationCache&gt;::deref;
</del><ins>+    using RefCounted::ref;
+    using RefCounted::deref;
</ins><span class="cx"> 
</span><del>-    EventTargetInterface eventTargetInterface() const override { return DOMApplicationCacheEventTargetInterfaceType; }
-    ScriptExecutionContext* scriptExecutionContext() const override;
</del><ins>+private:
+    explicit DOMApplicationCache(Frame&amp;);
</ins><span class="cx"> 
</span><del>-    static const AtomicString&amp; toEventType(ApplicationCacheHost::EventID id);
</del><ins>+    void refEventTarget() final { ref(); }
+    void derefEventTarget() final { deref(); }
</ins><span class="cx"> 
</span><del>-private:
-    explicit DOMApplicationCache(Frame*);
</del><ins>+    EventTargetInterface eventTargetInterface() const final { return DOMApplicationCacheEventTargetInterfaceType; }
+    ScriptExecutionContext* scriptExecutionContext() const final;
</ins><span class="cx"> 
</span><del>-    void refEventTarget() override { ref(); }
-    void derefEventTarget() override { deref(); }
</del><ins>+    void disconnectFrameForDocumentSuspension() final;
+    void reconnectFrameFromDocumentSuspension(Frame*) final;
+    void willDestroyGlobalObjectInFrame() final;
</ins><span class="cx"> 
</span><span class="cx">     ApplicationCacheHost* applicationCacheHost() const;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheManifestParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ManifestParser.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ManifestParser.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ManifestParser.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -119,8 +119,7 @@
</span><span class="cx">             if (!url.isValid())
</span><span class="cx">                 continue;
</span><span class="cx"> 
</span><del>-            if (url.hasFragmentIdentifier())
-                url.removeFragmentIdentifier();
</del><ins>+            url.removeFragmentIdentifier();
</ins><span class="cx">             
</span><span class="cx">             if (!equalIgnoringASCIICase(url.protocol(), manifestURL.protocol()))
</span><span class="cx">                 continue;
</span><span class="lines">@@ -150,8 +149,7 @@
</span><span class="cx">             URL namespaceURL(manifestURL, line.substring(0, p - upconvertedLineCharacters));
</span><span class="cx">             if (!namespaceURL.isValid())
</span><span class="cx">                 continue;
</span><del>-            if (namespaceURL.hasFragmentIdentifier())
-                namespaceURL.removeFragmentIdentifier();
</del><ins>+            namespaceURL.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><span class="cx">             if (!protocolHostAndPortAreEqual(manifestURL, namespaceURL))
</span><span class="cx">                 continue;
</span><span class="lines">@@ -168,8 +166,7 @@
</span><span class="cx">             URL fallbackURL(manifestURL, String(fallbackStart, p - fallbackStart));
</span><span class="cx">             if (!fallbackURL.isValid())
</span><span class="cx">                 continue;
</span><del>-            if (fallbackURL.hasFragmentIdentifier())
-                fallbackURL.removeFragmentIdentifier();
</del><ins>+            fallbackURL.removeFragmentIdentifier();
</ins><span class="cx"> 
</span><span class="cx">             if (!protocolHostAndPortAreEqual(manifestURL, fallbackURL))
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheManifestParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/ManifestParser.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/ManifestParser.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/appcache/ManifestParser.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -30,15 +30,15 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    class URL;
</del><ins>+class URL;
</ins><span class="cx"> 
</span><del>-    struct Manifest {
-        Vector&lt;URL&gt; onlineWhitelistedURLs;
-        HashSet&lt;String&gt; explicitURLs;
-        FallbackURLVector fallbackURLs;
-        bool allowAllNetworkRequests; // Wildcard found in NETWORK section.
-    };
</del><ins>+struct Manifest {
+    Vector&lt;URL&gt; onlineWhitelistedURLs;
+    HashSet&lt;String&gt; explicitURLs;
+    FallbackURLVector fallbackURLs;
+    bool allowAllNetworkRequests; // Wildcard found in NETWORK section.
+};
</ins><span class="cx"> 
</span><del>-    bool parseManifest(const URL&amp; manifestURL, const char* data, int length, Manifest&amp;);
</del><ins>+bool parseManifest(const URL&amp; manifestURL, const char* data, int length, Manifest&amp;);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchiveArchivecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/Archive.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/Archive.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/Archive.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -37,17 +37,17 @@
</span><span class="cx"> 
</span><span class="cx"> void Archive::clearAllSubframeArchives()
</span><span class="cx"> {
</span><del>-    Vector&lt;RefPtr&lt;Archive&gt;&gt; clearedArchives;
-    clearAllSubframeArchivesImpl(&amp;clearedArchives);
</del><ins>+    HashSet&lt;Archive*&gt; clearedArchives;
+    clearedArchives.add(this);
+    clearAllSubframeArchives(clearedArchives);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Archive::clearAllSubframeArchivesImpl(Vector&lt;RefPtr&lt;Archive&gt;&gt;* clearedArchives)
</del><ins>+void Archive::clearAllSubframeArchives(HashSet&lt;Archive*&gt;&amp; clearedArchives)
</ins><span class="cx"> {
</span><ins>+    ASSERT(clearedArchives.contains(this));
</ins><span class="cx">     for (auto&amp; archive : m_subframeArchives) {
</span><del>-        if (!clearedArchives-&gt;contains(archive)) {
-            clearedArchives-&gt;append(archive);
-            archive-&gt;clearAllSubframeArchivesImpl(clearedArchives);
-        }
</del><ins>+        if (clearedArchives.add(archive.ptr()))
+            archive-&gt;clearAllSubframeArchives(clearedArchives);
</ins><span class="cx">     }
</span><span class="cx">     m_subframeArchives.clear();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchiveArchiveh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/Archive.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/Archive.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/Archive.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,41 +29,38 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ArchiveResource.h&quot;
</span><ins>+#include &lt;wtf/HashSet.h&gt;
</ins><span class="cx"> 
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Archive : public RefCounted&lt;Archive&gt; {
</span><span class="cx"> public:
</span><del>-    enum Type {
-      WebArchive,
-      MHTML
-    };
</del><span class="cx">     virtual ~Archive();
</span><del>-    virtual Type type() const = 0;
</del><ins>+
+    virtual bool shouldLoadFromArchiveOnly() const = 0;
+    virtual bool shouldOverrideBaseURL() const = 0;
+    virtual bool shouldUseMainResourceEncoding() const = 0;
+    virtual bool shouldUseMainResourceURL() const = 0;
+
</ins><span class="cx">     ArchiveResource* mainResource() { return m_mainResource.get(); }
</span><del>-    const Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt;&amp; subresources() const { return m_subresources; }
-    const Vector&lt;RefPtr&lt;Archive&gt;&gt;&amp; subframeArchives() const { return m_subframeArchives; }
</del><ins>+    const Vector&lt;Ref&lt;ArchiveResource&gt;&gt;&amp; subresources() const { return m_subresources; }
+    const Vector&lt;Ref&lt;Archive&gt;&gt;&amp; subframeArchives() const { return m_subframeArchives; }
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     // These methods are meant for subclasses for different archive types to add resources in to the archive,
</span><span class="cx">     // and should not be exposed as archives should be immutable to clients
</span><del>-    void setMainResource(PassRefPtr&lt;ArchiveResource&gt; mainResource) { m_mainResource = mainResource; }
-    void addSubresource(PassRefPtr&lt;ArchiveResource&gt; subResource) { m_subresources.append(subResource); }
-    void addSubframeArchive(PassRefPtr&lt;Archive&gt; subframeArchive) { m_subframeArchives.append(subframeArchive); }
</del><ins>+    void setMainResource(Ref&lt;ArchiveResource&gt;&amp;&amp; mainResource) { m_mainResource = WTFMove(mainResource); }
+    void addSubresource(Ref&lt;ArchiveResource&gt;&amp;&amp; resource) { m_subresources.append(WTFMove(resource)); }
+    void addSubframeArchive(Ref&lt;Archive&gt;&amp;&amp; subframeArchive) { m_subframeArchives.append(WTFMove(subframeArchive)); }
</ins><span class="cx"> 
</span><span class="cx">     void clearAllSubframeArchives();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void clearAllSubframeArchivesImpl(Vector&lt;RefPtr&lt;Archive&gt;&gt;* clearedArchives);
</del><ins>+    void clearAllSubframeArchives(HashSet&lt;Archive*&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;ArchiveResource&gt; m_mainResource;
</span><del>-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; m_subresources;
-    Vector&lt;RefPtr&lt;Archive&gt;&gt; m_subframeArchives;
</del><ins>+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; m_subresources;
+    Vector&lt;Ref&lt;Archive&gt;&gt; m_subframeArchives;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchiveArchiveFactorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/ArchiveFactory.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/ArchiveFactory.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/ArchiveFactory.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -49,33 +49,35 @@
</span><span class="cx"> typedef RefPtr&lt;Archive&gt; RawDataCreationFunction(const URL&amp;, SharedBuffer&amp;);
</span><span class="cx"> typedef HashMap&lt;String, RawDataCreationFunction*, ASCIICaseInsensitiveHash&gt; ArchiveMIMETypesMap;
</span><span class="cx"> 
</span><del>-// The create functions in the archive classes return PassRefPtr to concrete subclasses
</del><ins>+// The create functions in the archive classes return RefPtr to concrete subclasses
</ins><span class="cx"> // of Archive. This adaptor makes the functions have a uniform return type.
</span><del>-template &lt;typename ArchiveClass&gt; static RefPtr&lt;Archive&gt; archiveFactoryCreate(const URL&amp; url, SharedBuffer&amp; buffer)
</del><ins>+template&lt;typename ArchiveClass&gt; static RefPtr&lt;Archive&gt; archiveFactoryCreate(const URL&amp; url, SharedBuffer&amp; buffer)
</ins><span class="cx"> {
</span><span class="cx">     return ArchiveClass::create(url, buffer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static ArchiveMIMETypesMap&amp; archiveMIMETypes()
</del><ins>+static ArchiveMIMETypesMap createArchiveMIMETypesMap()
</ins><span class="cx"> {
</span><del>-    static NeverDestroyed&lt;ArchiveMIMETypesMap&gt; mimeTypes;
-    static bool initialized = false;
</del><ins>+    ArchiveMIMETypesMap map;
</ins><span class="cx"> 
</span><del>-    if (initialized)
-        return mimeTypes;
-
</del><span class="cx"> #if ENABLE(WEB_ARCHIVE) &amp;&amp; USE(CF)
</span><del>-    mimeTypes.get().set(&quot;application/x-webarchive&quot;, archiveFactoryCreate&lt;LegacyWebArchive&gt;);
</del><ins>+    map.add(ASCIILiteral { &quot;application/x-webarchive&quot; }, archiveFactoryCreate&lt;LegacyWebArchive&gt;);
</ins><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if ENABLE(MHTML)
</span><del>-    mimeTypes.get().set(&quot;multipart/related&quot;, archiveFactoryCreate&lt;MHTMLArchive&gt;);
-    mimeTypes.get().set(&quot;application/x-mimearchive&quot;, archiveFactoryCreate&lt;MHTMLArchive&gt;);
</del><ins>+    map.add(ASCIILiteral { &quot;multipart/related&quot; }, archiveFactoryCreate&lt;MHTMLArchive&gt;);
+    map.add(ASCIILiteral { &quot;application/x-mimearchive&quot; }, archiveFactoryCreate&lt;MHTMLArchive&gt;);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    initialized = true;
-    return mimeTypes;
</del><ins>+    return map;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static ArchiveMIMETypesMap&amp; archiveMIMETypes()
+{
+    static NeverDestroyed&lt;ArchiveMIMETypesMap&gt; map = createArchiveMIMETypesMap();
+    return map;
+}
+
</ins><span class="cx"> bool ArchiveFactory::isArchiveMimeType(const String&amp; mimeType)
</span><span class="cx"> {
</span><span class="cx">     return !mimeType.isEmpty() &amp;&amp; archiveMIMETypes().contains(mimeType);
</span><span class="lines">@@ -83,10 +85,14 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;Archive&gt; ArchiveFactory::create(const URL&amp; url, SharedBuffer* data, const String&amp; mimeType)
</span><span class="cx"> {
</span><del>-    RawDataCreationFunction* function = mimeType.isEmpty() ? 0 : archiveMIMETypes().get(mimeType);
</del><span class="cx">     if (!data)
</span><span class="cx">         return nullptr;
</span><del>-    return function ? function(url, *data) : RefPtr&lt;Archive&gt;(nullptr);
</del><ins>+    if (mimeType.isEmpty())
+        return nullptr;
+    auto* function = archiveMIMETypes().get(mimeType);
+    if (!function)
+        return nullptr;
+    return function(url, *data);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ArchiveFactory::registerKnownArchiveMIMETypes()
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchiveArchiveResourceCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,31 +29,23 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ArchiveResourceCollection.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;Archive.h&quot;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ArchiveResourceCollection::ArchiveResourceCollection()
</del><ins>+void ArchiveResourceCollection::addAllResources(Archive&amp; archive)
</ins><span class="cx"> {
</span><del>-}
</del><ins>+    for (auto&amp; subresource : archive.subresources())
+        m_subresources.set(subresource-&gt;url(), subresource.ptr());
</ins><span class="cx"> 
</span><del>-void ArchiveResourceCollection::addAllResources(Archive* archive)
-{
-    ASSERT(archive);
-    if (!archive)
-        return;
-
-    for (auto&amp; subresource : archive-&gt;subresources())
-        m_subresources.set(subresource-&gt;url(), subresource.get());
-
-    for (auto&amp; subframeArchive : archive-&gt;subframeArchives()) {
</del><ins>+    for (auto&amp; subframeArchive : archive.subframeArchives()) {
</ins><span class="cx">         ASSERT(subframeArchive-&gt;mainResource());
</span><del>-
-        const String&amp; frameName = subframeArchive-&gt;mainResource()-&gt;frameName();
-        if (!frameName.isNull())
-            m_subframes.set(frameName, subframeArchive.get());
-        else {
-            // In the MHTML case, frames don't have a name so we use the URL instead.
-            m_subframes.set(subframeArchive-&gt;mainResource()-&gt;url().string(), subframeArchive.get());
</del><ins>+        auto frameName = subframeArchive-&gt;mainResource()-&gt;frameName();
+        if (frameName.isNull()) {
+            // In the MHTML case, frames don't have a name, so we use the URL instead.
+            frameName = subframeArchive-&gt;mainResource()-&gt;url().string();
</ins><span class="cx">         }
</span><ins>+        m_subframes.set(frameName, subframeArchive.ptr());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -61,25 +53,19 @@
</span><span class="cx"> // Can we change the design in a manner that will let us deprecate that API without reducing functionality of those apps?
</span><span class="cx"> void ArchiveResourceCollection::addResource(Ref&lt;ArchiveResource&gt;&amp;&amp; resource)
</span><span class="cx"> {
</span><del>-    const URL&amp; url = resource-&gt;url();
</del><ins>+    auto&amp; url = resource-&gt;url();
</ins><span class="cx">     m_subresources.set(url, WTFMove(resource));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ArchiveResource* ArchiveResourceCollection::archiveResourceForURL(const URL&amp; url)
</span><span class="cx"> {
</span><del>-    ArchiveResource* resource = m_subresources.get(url);
-    if (!resource)
-        return nullptr;
-        
-    return resource;
</del><ins>+    return m_subresources.get(url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Archive&gt; ArchiveResourceCollection::popSubframeArchive(const String&amp; frameName, const URL&amp; url)
</del><ins>+RefPtr&lt;Archive&gt; ArchiveResourceCollection::popSubframeArchive(const String&amp; frameName, const URL&amp; url)
</ins><span class="cx"> {
</span><del>-    auto archive = m_subframes.take(frameName);
-    if (archive)
-        return WTFMove(archive);
-
</del><ins>+    if (auto archive = m_subframes.take(frameName))
+        return archive;
</ins><span class="cx">     return m_subframes.take(url.string());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchiveArchiveResourceCollectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,24 +28,29 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Archive.h&quot;
-#include &quot;ArchiveResource.h&quot;
-#include &quot;URL.h&quot;
</del><ins>+#include &lt;wtf/Forward.h&gt;
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><del>-#include &lt;wtf/text/WTFString.h&gt;
</del><ins>+#include &lt;wtf/Noncopyable.h&gt;
+#include &lt;wtf/text/StringHash.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class Archive;
+class ArchiveResource;
+class URL;
+
</ins><span class="cx"> class ArchiveResourceCollection {
</span><del>-    WTF_MAKE_NONCOPYABLE(ArchiveResourceCollection); WTF_MAKE_FAST_ALLOCATED;
</del><ins>+    WTF_MAKE_NONCOPYABLE(ArchiveResourceCollection);
+    WTF_MAKE_FAST_ALLOCATED;
+
</ins><span class="cx"> public:
</span><del>-    ArchiveResourceCollection();
</del><ins>+    ArchiveResourceCollection() = default;
</ins><span class="cx"> 
</span><span class="cx">     void addResource(Ref&lt;ArchiveResource&gt;&amp;&amp;);
</span><del>-    void addAllResources(Archive*);
</del><ins>+    void addAllResources(Archive&amp;);
</ins><span class="cx">     
</span><span class="cx">     WEBCORE_EXPORT ArchiveResource* archiveResourceForURL(const URL&amp;);
</span><del>-    PassRefPtr&lt;Archive&gt; popSubframeArchive(const String&amp; frameName, const URL&amp;);
</del><ins>+    RefPtr&lt;Archive&gt; popSubframeArchive(const String&amp; frameName, const URL&amp;);
</ins><span class="cx">     
</span><span class="cx"> private:    
</span><span class="cx">     HashMap&lt;String, RefPtr&lt;ArchiveResource&gt;&gt; m_subresources;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivecfLegacyWebArchivecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -80,18 +80,16 @@
</span><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceMIMETypeKey, 0);
</span><span class="cx">         return propertyList;
</span><span class="cx">     }
</span><del>-    
-    RetainPtr&lt;CFMutableDictionaryRef&gt; propertyList = adoptCF(CFDictionaryCreateMutable(0, 6, 0, &amp;kCFTypeDictionaryValueCallBacks));
-    
</del><ins>+
+    auto propertyList = adoptCF(CFDictionaryCreateMutable(0, 6, 0, &amp;kCFTypeDictionaryValueCallBacks));
+
</ins><span class="cx">     // Resource data can be empty, but must be represented by an empty CFDataRef
</span><del>-    SharedBuffer&amp; data = resource-&gt;data();
-    RetainPtr&lt;CFDataRef&gt; cfData;
-    cfData = data.createCFData();
</del><ins>+    auto&amp; data = resource-&gt;data();
</ins><span class="cx"> 
</span><del>-    CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceDataKey, cfData.get());
-    
</del><ins>+    CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceDataKey, data.createCFData().get());
+
</ins><span class="cx">     // Resource URL cannot be null
</span><del>-    if (RetainPtr&lt;CFStringRef&gt; cfURL = resource-&gt;url().string().createCFString())
</del><ins>+    if (auto cfURL = resource-&gt;url().string().createCFString())
</ins><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceURLKey, cfURL.get());
</span><span class="cx">     else {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - NULL resource URL is invalid - returning null property list&quot;);
</span><span class="lines">@@ -99,23 +97,22 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // FrameName should be left out if empty for subresources, but always included for main resources
</span><del>-    const String&amp; frameName(resource-&gt;frameName());
</del><ins>+    auto&amp; frameName = resource-&gt;frameName();
</ins><span class="cx">     if (!frameName.isEmpty() || isMainResource)
</span><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceFrameNameKey, frameName.createCFString().get());
</span><del>-    
</del><ins>+
</ins><span class="cx">     // Set MIMEType, TextEncodingName, and ResourceResponse only if they actually exist
</span><del>-    const String&amp; mimeType(resource-&gt;mimeType());
</del><ins>+    auto&amp; mimeType = resource-&gt;mimeType();
</ins><span class="cx">     if (!mimeType.isEmpty())
</span><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceMIMETypeKey, mimeType.createCFString().get());
</span><del>-    
-    const String&amp; textEncoding(resource-&gt;textEncoding());
</del><ins>+
+    auto&amp; textEncoding = resource-&gt;textEncoding();
</ins><span class="cx">     if (!textEncoding.isEmpty())
</span><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceTextEncodingNameKey, textEncoding.createCFString().get());
</span><span class="cx"> 
</span><span class="cx">     // Don't include the resource response for the main resource
</span><span class="cx">     if (!isMainResource) {
</span><del>-        RetainPtr&lt;CFDataRef&gt; resourceResponseData = createPropertyListRepresentation(resource-&gt;response());
-        if (resourceResponseData)
</del><ins>+        if (auto resourceResponseData = createPropertyListRepresentation(resource-&gt;response()))
</ins><span class="cx">             CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceResponseKey, resourceResponseData.get());    
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -122,19 +119,19 @@
</span><span class="cx">     return propertyList;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RetainPtr&lt;CFDictionaryRef&gt; LegacyWebArchive::createPropertyListRepresentation(Archive* archive)
</del><ins>+RetainPtr&lt;CFDictionaryRef&gt; LegacyWebArchive::createPropertyListRepresentation(Archive&amp; archive)
</ins><span class="cx"> {
</span><del>-    RetainPtr&lt;CFMutableDictionaryRef&gt; propertyList = adoptCF(CFDictionaryCreateMutable(0, 3, 0, &amp;kCFTypeDictionaryValueCallBacks));
-    
-    RetainPtr&lt;CFDictionaryRef&gt; mainResourceDict = createPropertyListRepresentation(archive-&gt;mainResource(), MainResource);
</del><ins>+    auto propertyList = adoptCF(CFDictionaryCreateMutable(0, 3, 0, &amp;kCFTypeDictionaryValueCallBacks));
+
+    auto mainResourceDict = createPropertyListRepresentation(archive.mainResource(), MainResource);
</ins><span class="cx">     ASSERT(mainResourceDict);
</span><span class="cx">     if (!mainResourceDict)
</span><span class="cx">         return nullptr;
</span><span class="cx">     CFDictionarySetValue(propertyList.get(), LegacyWebArchiveMainResourceKey, mainResourceDict.get());
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFMutableArrayRef&gt; subresourcesArray = adoptCF(CFArrayCreateMutable(0, archive-&gt;subresources().size(), &amp;kCFTypeArrayCallBacks));
-    for (auto&amp; resource : archive-&gt;subresources()) {
-        if (RetainPtr&lt;CFDictionaryRef&gt; subresource = createPropertyListRepresentation(resource.get(), Subresource))
</del><ins>+    auto subresourcesArray = adoptCF(CFArrayCreateMutable(0, archive.subresources().size(), &amp;kCFTypeArrayCallBacks));
+    for (auto&amp; resource : archive.subresources()) {
+        if (auto subresource = createPropertyListRepresentation(resource.ptr(), Subresource))
</ins><span class="cx">             CFArrayAppendValue(subresourcesArray.get(), subresource.get());
</span><span class="cx">         else
</span><span class="cx">             LOG(Archives, &quot;LegacyWebArchive - Failed to create property list for subresource&quot;);
</span><span class="lines">@@ -142,9 +139,9 @@
</span><span class="cx">     if (CFArrayGetCount(subresourcesArray.get()))
</span><span class="cx">         CFDictionarySetValue(propertyList.get(), LegacyWebArchiveSubresourcesKey, subresourcesArray.get());
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFMutableArrayRef&gt; subframesArray = adoptCF(CFArrayCreateMutable(0, archive-&gt;subframeArchives().size(), &amp;kCFTypeArrayCallBacks));
-    for (auto&amp; subframe : archive-&gt;subframeArchives()) {
-        if (RetainPtr&lt;CFDictionaryRef&gt; subframeArchive = createPropertyListRepresentation(subframe.get()))
</del><ins>+    auto subframesArray = adoptCF(CFArrayCreateMutable(0, archive.subframeArchives().size(), &amp;kCFTypeArrayCallBacks));
+    for (auto&amp; subframe : archive.subframeArchives()) {
+        if (auto subframeArchive = createPropertyListRepresentation(subframe.get()))
</ins><span class="cx">             CFArrayAppendValue(subframesArray.get(), subframeArchive.get());
</span><span class="cx">         else
</span><span class="cx">             LOG(Archives, &quot;LegacyWebArchive - Failed to create property list for subframe archive&quot;);
</span><span class="lines">@@ -160,13 +157,13 @@
</span><span class="cx">     ASSERT(data);
</span><span class="cx">     if (!data)
</span><span class="cx">         return ResourceResponse();
</span><del>-    
</del><ins>+
</ins><span class="cx">     // If the ResourceResponseVersion (passed in as responseDataType) exists at all, this is a &quot;new&quot; web archive that we
</span><span class="cx">     // can parse well in a cross platform manner If it doesn't exist, we will assume this is an &quot;old&quot; web archive with,
</span><span class="cx">     // NSURLResponse objects in it and parse the ResourceResponse as such.
</span><span class="cx">     if (!responseDataType)
</span><span class="cx">         return createResourceResponseFromMacArchivedData(data);
</span><del>-        
</del><ins>+
</ins><span class="cx">     // FIXME: Parse the &quot;new&quot; format that the above comment references here. This format doesn't exist yet.
</span><span class="cx">     return ResourceResponse();
</span><span class="cx"> }
</span><span class="lines">@@ -176,32 +173,32 @@
</span><span class="cx">     ASSERT(dictionary);
</span><span class="cx">     if (!dictionary)
</span><span class="cx">         return nullptr;
</span><del>-        
-    CFDataRef resourceData = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceDataKey));
</del><ins>+
+    auto resourceData = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceDataKey));
</ins><span class="cx">     if (resourceData &amp;&amp; CFGetTypeID(resourceData) != CFDataGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Resource data is not of type CFData, cannot create invalid resource&quot;);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><del>-    
-    CFStringRef frameName = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceFrameNameKey));
</del><ins>+
+    auto frameName = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceFrameNameKey));
</ins><span class="cx">     if (frameName &amp;&amp; CFGetTypeID(frameName) != CFStringGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Frame name is not of type CFString, cannot create invalid resource&quot;);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><del>-    
-    CFStringRef mimeType = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceMIMETypeKey));
</del><ins>+
+    auto mimeType = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceMIMETypeKey));
</ins><span class="cx">     if (mimeType &amp;&amp; CFGetTypeID(mimeType) != CFStringGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - MIME type is not of type CFString, cannot create invalid resource&quot;);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><del>-    
-    CFStringRef url = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceURLKey));
</del><ins>+
+    auto url = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceURLKey));
</ins><span class="cx">     if (url &amp;&amp; CFGetTypeID(url) != CFStringGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - URL is not of type CFString, cannot create invalid resource&quot;);
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><del>-    
-    CFStringRef textEncoding = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceTextEncodingNameKey));
</del><ins>+
+    auto textEncoding = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceTextEncodingNameKey));
</ins><span class="cx">     if (textEncoding &amp;&amp; CFGetTypeID(textEncoding) != CFStringGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Text encoding is not of type CFString, cannot create invalid resource&quot;);
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -208,15 +205,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ResourceResponse response;
</span><del>-    
-    CFDataRef resourceResponseData = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceResponseKey));
-    if (resourceResponseData) {
</del><ins>+
+    if (auto resourceResponseData = static_cast&lt;CFDataRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceResponseKey))) {
</ins><span class="cx">         if (CFGetTypeID(resourceResponseData) != CFDataGetTypeID()) {
</span><span class="cx">             LOG(Archives, &quot;LegacyWebArchive - Resource response data is not of type CFData, cannot create invalid resource&quot;);
</span><span class="cx">             return nullptr;
</span><span class="cx">         }
</span><span class="cx">         
</span><del>-        CFStringRef resourceResponseVersion = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceResponseVersionKey));
</del><ins>+        auto resourceResponseVersion = static_cast&lt;CFStringRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveResourceResponseVersionKey));
</ins><span class="cx">         if (resourceResponseVersion &amp;&amp; CFGetTypeID(resourceResponseVersion) != CFStringGetTypeID()) {
</span><span class="cx">             LOG(Archives, &quot;LegacyWebArchive - Resource response version is not of type CFString, cannot create invalid resource&quot;);
</span><span class="cx">             return nullptr;
</span><span class="lines">@@ -224,7 +220,7 @@
</span><span class="cx">         
</span><span class="cx">         response = createResourceResponseFromPropertyListData(resourceResponseData, resourceResponseVersion);
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     return ArchiveResource::create(SharedBuffer::wrapCFData(resourceData), URL(URL(), url), mimeType, textEncoding, frameName, response);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -233,14 +229,12 @@
</span><span class="cx">     return adoptRef(*new LegacyWebArchive);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(RefPtr&lt;ArchiveResource&gt;&amp;&amp; mainResource, Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt;&amp;&amp; subresources, Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt;&amp;&amp; subframeArchives)
</del><ins>+Ref&lt;LegacyWebArchive&gt; LegacyWebArchive::create(Ref&lt;ArchiveResource&gt;&amp;&amp; mainResource, Vector&lt;Ref&lt;ArchiveResource&gt;&gt;&amp;&amp; subresources, Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt;&amp;&amp; subframeArchives)
</ins><span class="cx"> {
</span><del>-    if (!mainResource)
-        return nullptr;
</del><ins>+    auto archive = create();
</ins><span class="cx"> 
</span><del>-    auto archive = create();
</del><span class="cx">     archive-&gt;setMainResource(WTFMove(mainResource));
</span><del>-    
</del><ins>+
</ins><span class="cx">     for (auto&amp; subresource : subresources)
</span><span class="cx">         archive-&gt;addSubresource(WTFMove(subresource));
</span><span class="cx"> 
</span><span class="lines">@@ -247,7 +241,7 @@
</span><span class="cx">     for (auto&amp; subframeArchive : subframeArchives)
</span><span class="cx">         archive-&gt;addSubframeArchive(WTFMove(subframeArchive));
</span><span class="cx"> 
</span><del>-    return WTFMove(archive);
</del><ins>+    return archive;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(SharedBuffer&amp; data)
</span><span class="lines">@@ -307,28 +301,30 @@
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Main resource is not the expected CFDictionary, aborting invalid WebArchive&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    
-    setMainResource(createResource(mainResourceDict));
-    if (!mainResource()) {
</del><ins>+
+    auto mainResource = createResource(mainResourceDict);
+    if (!mainResource) {
</ins><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Failed to parse main resource from CFDictionary or main resource does not exist, aborting invalid WebArchive&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    
-    if (mainResource()-&gt;mimeType().isNull()) {
</del><ins>+
+    if (mainResource-&gt;mimeType().isNull()) {
</ins><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Main resource MIME type is required, but was null.&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    
-    CFArrayRef subresourceArray = static_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveSubresourcesKey));
</del><ins>+
+    setMainResource(mainResource.releaseNonNull());
+
+    auto subresourceArray = static_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveSubresourcesKey));
</ins><span class="cx">     if (subresourceArray &amp;&amp; CFGetTypeID(subresourceArray) != CFArrayGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Subresources is not the expected Array, aborting invalid WebArchive&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (subresourceArray) {
</span><del>-        CFIndex count = CFArrayGetCount(subresourceArray);
</del><ins>+        auto count = CFArrayGetCount(subresourceArray);
</ins><span class="cx">         for (CFIndex i = 0; i &lt; count; ++i) {
</span><del>-            CFDictionaryRef subresourceDict = static_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(subresourceArray, i));
</del><ins>+            auto subresourceDict = static_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(subresourceArray, i));
</ins><span class="cx">             if (CFGetTypeID(subresourceDict) != CFDictionaryGetTypeID()) {
</span><span class="cx">                 LOG(Archives, &quot;LegacyWebArchive - Subresource is not expected CFDictionary, aborting invalid WebArchive&quot;);
</span><span class="cx">                 return false;
</span><span class="lines">@@ -335,20 +331,20 @@
</span><span class="cx">             }
</span><span class="cx">             
</span><span class="cx">             if (auto subresource = createResource(subresourceDict))
</span><del>-                addSubresource(WTFMove(subresource));
</del><ins>+                addSubresource(subresource.releaseNonNull());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><del>-    
-    CFArrayRef subframeArray = static_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveSubframeArchivesKey));
</del><ins>+
+    auto subframeArray = static_cast&lt;CFArrayRef&gt;(CFDictionaryGetValue(dictionary, LegacyWebArchiveSubframeArchivesKey));
</ins><span class="cx">     if (subframeArray &amp;&amp; CFGetTypeID(subframeArray) != CFArrayGetTypeID()) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Subframe archives is not the expected Array, aborting invalid WebArchive&quot;);
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (subframeArray) {
</span><del>-        CFIndex count = CFArrayGetCount(subframeArray);
</del><ins>+        auto count = CFArrayGetCount(subframeArray);
</ins><span class="cx">         for (CFIndex i = 0; i &lt; count; ++i) {
</span><del>-            CFDictionaryRef subframeDict = static_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(subframeArray, i));
</del><ins>+            auto subframeDict = static_cast&lt;CFDictionaryRef&gt;(CFArrayGetValueAtIndex(subframeArray, i));
</ins><span class="cx">             if (CFGetTypeID(subframeDict) != CFDictionaryGetTypeID()) {
</span><span class="cx">                 LOG(Archives, &quot;LegacyWebArchive - Subframe array is not expected CFDictionary, aborting invalid WebArchive&quot;);
</span><span class="cx">                 return false;
</span><span class="lines">@@ -365,14 +361,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Archive::Type LegacyWebArchive::type() const
-{
-    return Archive::WebArchive;
-}
-    
</del><span class="cx"> RetainPtr&lt;CFDataRef&gt; LegacyWebArchive::rawDataRepresentation()
</span><span class="cx"> {
</span><del>-    RetainPtr&lt;CFDictionaryRef&gt; propertyList = createPropertyListRepresentation(this);
</del><ins>+    auto propertyList = createPropertyListRepresentation(*this);
</ins><span class="cx">     ASSERT(propertyList);
</span><span class="cx">     if (!propertyList) {
</span><span class="cx">         LOG(Archives, &quot;LegacyWebArchive - Failed to create property list for archive, returning no data&quot;);
</span><span class="lines">@@ -379,12 +370,12 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFWriteStreamRef&gt; stream = adoptCF(CFWriteStreamCreateWithAllocatedBuffers(0, 0));
</del><ins>+    auto stream = adoptCF(CFWriteStreamCreateWithAllocatedBuffers(0, 0));
</ins><span class="cx"> 
</span><span class="cx">     CFWriteStreamOpen(stream.get());
</span><span class="cx">     CFPropertyListWrite(propertyList.get(), stream.get(), kCFPropertyListBinaryFormat_v1_0, 0, 0);
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;CFDataRef&gt; plistData = adoptCF(static_cast&lt;CFDataRef&gt;(CFWriteStreamCopyProperty(stream.get(), kCFStreamPropertyDataWritten)));
</del><ins>+    auto plistData = adoptCF(static_cast&lt;CFDataRef&gt;(CFWriteStreamCopyProperty(stream.get(), kCFStreamPropertyDataWritten)));
</ins><span class="cx">     ASSERT(plistData);
</span><span class="cx"> 
</span><span class="cx">     CFWriteStreamClose(stream.get());
</span><span class="lines">@@ -432,7 +423,7 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Node*&gt; nodeList;
</span><span class="cx">     String markupString = createMarkup(node, IncludeNode, &amp;nodeList, DoNotResolveURLs, tagNamesToFilter.get());
</span><del>-    Node::NodeType nodeType = node.nodeType();
</del><ins>+    auto nodeType = node.nodeType();
</ins><span class="cx">     if (nodeType != Node::DOCUMENT_NODE &amp;&amp; nodeType != Node::DOCUMENT_TYPE_NODE)
</span><span class="cx">         markupString = documentTypeString(node.document()) + markupString;
</span><span class="cx"> 
</span><span class="lines">@@ -441,20 +432,21 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(Frame&amp; frame)
</span><span class="cx"> {
</span><del>-    DocumentLoader* documentLoader = frame.loader().documentLoader();
-
</del><ins>+    auto* documentLoader = frame.loader().documentLoader();
</ins><span class="cx">     if (!documentLoader)
</span><span class="cx">         return nullptr;
</span><del>-        
-    Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt; subframeArchives;
-    
</del><ins>+
+    auto mainResource = documentLoader-&gt;mainResource();
+    if (!mainResource)
+        return nullptr;
+
+    Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt; subframeArchives;
</ins><span class="cx">     for (unsigned i = 0; i &lt; frame.tree().childCount(); ++i) {
</span><del>-        if (RefPtr&lt;LegacyWebArchive&gt; childFrameArchive = create(*frame.tree().child(i)))
-            subframeArchives.append(WTFMove(childFrameArchive));
</del><ins>+        if (auto childFrameArchive = create(*frame.tree().child(i)))
+            subframeArchives.append(childFrameArchive.releaseNonNull());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    auto subresources = documentLoader-&gt;subresources();
-    return create(documentLoader-&gt;mainResource(), WTFMove(subresources), WTFMove(subframeArchives));
</del><ins>+    return create(mainResource.releaseNonNull(), documentLoader-&gt;subresources(), WTFMove(subframeArchives));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(Range* range)
</span><span class="lines">@@ -462,22 +454,20 @@
</span><span class="cx">     if (!range)
</span><span class="cx">         return nullptr;
</span><span class="cx">         
</span><del>-    Document&amp; document = range-&gt;startContainer().document();
-
-    Frame* frame = document.frame();
</del><ins>+    auto&amp; document = range-&gt;startContainer().document();
+    auto* frame = document.frame();
</ins><span class="cx">     if (!frame)
</span><span class="cx">         return nullptr;
</span><del>-    
-    // FIXME: This is always &quot;for interchange&quot;. Is that right? See the previous method.
</del><ins>+
+    // FIXME: This is always &quot;for interchange&quot;. Is that right?
</ins><span class="cx">     Vector&lt;Node*&gt; nodeList;
</span><span class="cx">     String markupString = documentTypeString(document) + createMarkup(*range, &amp;nodeList, AnnotateForInterchange);
</span><del>-
</del><span class="cx">     return create(markupString, *frame, nodeList, nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::create(const String&amp; markupString, Frame&amp; frame, const Vector&lt;Node*&gt;&amp; nodes, std::function&lt;bool (Frame&amp;)&gt; frameFilter)
</span><span class="cx"> {
</span><del>-    const ResourceResponse&amp; response = frame.loader().documentLoader()-&gt;response();
</del><ins>+    auto&amp; response = frame.loader().documentLoader()-&gt;response();
</ins><span class="cx">     URL responseURL = response.url();
</span><span class="cx">     
</span><span class="cx">     // it's possible to have a response without a URL here
</span><span class="lines">@@ -485,25 +475,23 @@
</span><span class="cx">     if (responseURL.isNull())
</span><span class="cx">         responseURL = URL(ParsedURLString, emptyString());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ArchiveResource&gt; mainResource = ArchiveResource::create(utf8Buffer(markupString), responseURL, response.mimeType(), &quot;UTF-8&quot;, frame.tree().uniqueName());
</del><ins>+    auto mainResource = ArchiveResource::create(utf8Buffer(markupString), responseURL, response.mimeType(), &quot;UTF-8&quot;, frame.tree().uniqueName());
</ins><span class="cx">     if (!mainResource)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt; subframeArchives;
-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; subresources;
</del><ins>+    Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt; subframeArchives;
+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; subresources;
</ins><span class="cx">     HashSet&lt;URL&gt; uniqueSubresources;
</span><span class="cx"> 
</span><del>-    size_t nodesSize = nodes.size();    
-    for (size_t i = 0; i &lt; nodesSize; ++i) {
-        Node&amp; node = *nodes[i];
</del><ins>+    for (auto&amp; nodePtr : nodes) {
+        Node&amp; node = *nodePtr;
</ins><span class="cx">         Frame* childFrame;
</span><span class="cx">         if ((is&lt;HTMLFrameElementBase&gt;(node) || is&lt;HTMLObjectElement&gt;(node))
</span><span class="cx">             &amp;&amp; (childFrame = downcast&lt;HTMLFrameOwnerElement&gt;(node).contentFrame())) {
</span><span class="cx">             if (frameFilter &amp;&amp; !frameFilter(*childFrame))
</span><span class="cx">                 continue;
</span><del>-                
-            if (RefPtr&lt;LegacyWebArchive&gt; subframeArchive = create(*childFrame-&gt;document(), frameFilter))
-                subframeArchives.append(WTFMove(subframeArchive));
</del><ins>+            if (auto subframeArchive = create(*childFrame-&gt;document(), frameFilter))
+                subframeArchives.append(subframeArchive.releaseNonNull());
</ins><span class="cx">             else
</span><span class="cx">                 LOG_ERROR(&quot;Unabled to archive subframe %s&quot;, childFrame-&gt;tree().uniqueName().string().utf8().data());
</span><span class="cx"> 
</span><span class="lines">@@ -510,17 +498,18 @@
</span><span class="cx">         } else {
</span><span class="cx">             ListHashSet&lt;URL&gt; subresourceURLs;
</span><span class="cx">             node.getSubresourceURLs(subresourceURLs);
</span><del>-            
-            DocumentLoader* documentLoader = frame.loader().documentLoader();
</del><span class="cx"> 
</span><del>-            for (const auto&amp; subresourceURL : subresourceURLs) {
</del><ins>+            ASSERT(frame.loader().documentLoader());
+            auto&amp; documentLoader = *frame.loader().documentLoader();
+
+            for (auto&amp; subresourceURL : subresourceURLs) {
</ins><span class="cx">                 if (uniqueSubresources.contains(subresourceURL))
</span><span class="cx">                     continue;
</span><span class="cx"> 
</span><span class="cx">                 uniqueSubresources.add(subresourceURL);
</span><span class="cx"> 
</span><del>-                if (RefPtr&lt;ArchiveResource&gt; resource = documentLoader-&gt;subresource(subresourceURL)) {
-                    subresources.append(WTFMove(resource));
</del><ins>+                if (auto resource = documentLoader.subresource(subresourceURL)) {
+                    subresources.append(resource.releaseNonNull());
</ins><span class="cx">                     continue;
</span><span class="cx">                 }
</span><span class="cx"> 
</span><span class="lines">@@ -528,10 +517,9 @@
</span><span class="cx"> #if ENABLE(CACHE_PARTITIONING)
</span><span class="cx">                 request.setDomainForCachePartition(frame.document()-&gt;topOrigin()-&gt;domainForCachePartition());
</span><span class="cx"> #endif
</span><del>-                CachedResource* cachedResource = MemoryCache::singleton().resourceForRequest(request, frame.page()-&gt;sessionID());
-                if (cachedResource) {
-                    if (RefPtr&lt;ArchiveResource&gt; resource = ArchiveResource::create(cachedResource-&gt;resourceBuffer(), subresourceURL, cachedResource-&gt;response())) {
-                        subresources.append(WTFMove(resource));
</del><ins>+                if (auto* cachedResource = MemoryCache::singleton().resourceForRequest(request, frame.page()-&gt;sessionID())) {
+                    if (auto resource = ArchiveResource::create(cachedResource-&gt;resourceBuffer(), subresourceURL, cachedResource-&gt;response())) {
+                        subresources.append(resource.releaseNonNull());
</ins><span class="cx">                         continue;
</span><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="lines">@@ -543,17 +531,17 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Add favicon if one exists for this page, if we are archiving the entire page.
</span><del>-    if (nodesSize &amp;&amp; nodes[0]-&gt;isDocumentNode() &amp;&amp; iconDatabase().isEnabled()) {
-        const String&amp; iconURL = iconDatabase().synchronousIconURLForPageURL(responseURL);
</del><ins>+    if (!nodes.isEmpty() &amp;&amp; nodes[0]-&gt;isDocumentNode() &amp;&amp; iconDatabase().isEnabled()) {
+        auto iconURL = iconDatabase().synchronousIconURLForPageURL(responseURL);
</ins><span class="cx">         if (!iconURL.isEmpty() &amp;&amp; iconDatabase().synchronousIconDataKnownForIconURL(iconURL)) {
</span><del>-            if (Image* iconImage = iconDatabase().synchronousIconForPageURL(responseURL, IntSize(16, 16))) {
</del><ins>+            if (auto* iconImage = iconDatabase().synchronousIconForPageURL(responseURL, IntSize(16, 16))) {
</ins><span class="cx">                 if (auto resource = ArchiveResource::create(iconImage-&gt;data(), URL(ParsedURLString, iconURL), &quot;image/x-icon&quot;, &quot;&quot;, &quot;&quot;))
</span><del>-                    subresources.append(WTFMove(resource));
</del><ins>+                    subresources.append(resource.releaseNonNull());
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return create(WTFMove(mainResource), WTFMove(subresources), WTFMove(subframeArchives));
</del><ins>+    return create(mainResource.releaseNonNull(), WTFMove(subresources), WTFMove(subframeArchives));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;LegacyWebArchive&gt; LegacyWebArchive::createFromSelection(Frame* frame)
</span><span class="lines">@@ -561,7 +549,7 @@
</span><span class="cx">     if (!frame)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    Document* document = frame-&gt;document();
</del><ins>+    auto* document = frame-&gt;document();
</ins><span class="cx">     if (!document)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="lines">@@ -569,12 +557,10 @@
</span><span class="cx">     builder.append(documentTypeString(*document));
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Node*&gt; nodeList;
</span><del>-    RefPtr&lt;Range&gt; selectionRange = frame-&gt;selection().toNormalizedRange();
-    if (selectionRange)
</del><ins>+    if (auto selectionRange = frame-&gt;selection().toNormalizedRange())
</ins><span class="cx">         builder.append(createMarkup(*selectionRange, &amp;nodeList, AnnotateForInterchange));
</span><span class="cx"> 
</span><del>-    String markupString = builder.toString();
-    RefPtr&lt;LegacyWebArchive&gt; archive = create(markupString, *frame, nodeList, nullptr);
</del><ins>+    auto archive = create(builder.toString(), *frame, nodeList, nullptr);
</ins><span class="cx">     
</span><span class="cx">     if (!document-&gt;isFrameSet())
</span><span class="cx">         return archive;
</span><span class="lines">@@ -584,7 +570,11 @@
</span><span class="cx">     String iframeMarkup = &quot;&lt;iframe frameborder=\&quot;no\&quot; marginwidth=\&quot;0\&quot; marginheight=\&quot;0\&quot; width=\&quot;98%%\&quot; height=\&quot;98%%\&quot; src=\&quot;&quot; + frame-&gt;loader().documentLoader()-&gt;response().url().string() + &quot;\&quot;&gt;&lt;/iframe&gt;&quot;;
</span><span class="cx">     auto iframeResource = ArchiveResource::create(utf8Buffer(iframeMarkup), blankURL(), &quot;text/html&quot;, &quot;UTF-8&quot;, String());
</span><span class="cx"> 
</span><del>-    return create(WTFMove(iframeResource), Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt;(), Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt; { archive });
</del><ins>+    Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt; subframeArchives;
+    subframeArchives.reserveInitialCapacity(1);
+    subframeArchives.uncheckedAppend(archive.releaseNonNull());
+
+    return create(iframeResource.releaseNonNull(), { }, WTFMove(subframeArchives));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivecfLegacyWebArchiveh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -37,24 +37,27 @@
</span><span class="cx"> class Node;
</span><span class="cx"> class Range;
</span><span class="cx"> 
</span><del>-class LegacyWebArchive : public Archive {
</del><ins>+class LegacyWebArchive final : public Archive {
</ins><span class="cx"> public:
</span><span class="cx">     WEBCORE_EXPORT static Ref&lt;LegacyWebArchive&gt; create();
</span><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(SharedBuffer&amp;);
</span><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(const URL&amp;, SharedBuffer&amp;);
</span><del>-    WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(RefPtr&lt;ArchiveResource&gt;&amp;&amp; mainResource, Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt;&amp;&amp; subresources, Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt;&amp;&amp; subframeArchives);
</del><ins>+    WEBCORE_EXPORT static Ref&lt;LegacyWebArchive&gt; create(Ref&lt;ArchiveResource&gt;&amp;&amp; mainResource, Vector&lt;Ref&lt;ArchiveResource&gt;&gt;&amp;&amp; subresources, Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt;&amp;&amp; subframeArchives);
</ins><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(Node&amp;, std::function&lt;bool(Frame&amp;)&gt; frameFilter = nullptr);
</span><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(Frame&amp;);
</span><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; createFromSelection(Frame*);
</span><span class="cx">     WEBCORE_EXPORT static RefPtr&lt;LegacyWebArchive&gt; create(Range*);
</span><span class="cx"> 
</span><del>-    Type type() const override;
-
</del><span class="cx">     WEBCORE_EXPORT RetainPtr&lt;CFDataRef&gt; rawDataRepresentation();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    LegacyWebArchive() { }
</del><ins>+    LegacyWebArchive() = default;
</ins><span class="cx"> 
</span><ins>+    bool shouldLoadFromArchiveOnly() const final { return false; }
+    bool shouldOverrideBaseURL() const final { return false; }
+    bool shouldUseMainResourceEncoding() const final { return true; }
+    bool shouldUseMainResourceURL() const final { return true; }
+
</ins><span class="cx">     enum MainResourceStatus { Subresource, MainResource };
</span><span class="cx"> 
</span><span class="cx">     static RefPtr&lt;LegacyWebArchive&gt; create(const String&amp; markupString, Frame&amp;, const Vector&lt;Node*&gt;&amp; nodes, std::function&lt;bool (Frame&amp;)&gt; frameFilter);
</span><span class="lines">@@ -62,7 +65,7 @@
</span><span class="cx">     static ResourceResponse createResourceResponseFromMacArchivedData(CFDataRef);
</span><span class="cx">     static ResourceResponse createResourceResponseFromPropertyListData(CFDataRef, CFStringRef responseDataType);
</span><span class="cx">     static RetainPtr&lt;CFDataRef&gt; createPropertyListRepresentation(const ResourceResponse&amp;);
</span><del>-    static RetainPtr&lt;CFDictionaryRef&gt; createPropertyListRepresentation(Archive*);
</del><ins>+    static RetainPtr&lt;CFDictionaryRef&gt; createPropertyListRepresentation(Archive&amp;);
</ins><span class="cx">     static RetainPtr&lt;CFDictionaryRef&gt; createPropertyListRepresentation(ArchiveResource*, MainResourceStatus);
</span><span class="cx"> 
</span><span class="cx">     bool extract(CFDictionaryRef);
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivemhtmlMHTMLArchivecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -122,15 +122,15 @@
</span><span class="cx">         RefPtr&lt;MHTMLArchive&gt; archive = parser.frameAt(i);
</span><span class="cx">         for (size_t j = 1; j &lt; parser.frameCount(); ++j) {
</span><span class="cx">             if (i != j)
</span><del>-                archive-&gt;addSubframeArchive(parser.frameAt(j));
</del><ins>+                archive-&gt;addSubframeArchive(*parser.frameAt(j));
</ins><span class="cx">         }
</span><span class="cx">         for (size_t j = 0; j &lt; parser.subResourceCount(); ++j)
</span><del>-            archive-&gt;addSubresource(parser.subResourceAt(j));
</del><ins>+            archive-&gt;addSubresource(*parser.subResourceAt(j));
</ins><span class="cx">     }
</span><span class="cx">     return mainArchive;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; MHTMLArchive::generateMHTMLData(Page* page)
</del><ins>+RefPtr&lt;SharedBuffer&gt; MHTMLArchive::generateMHTMLData(Page* page)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;PageSerializer::Resource&gt; resources;
</span><span class="cx">     PageSerializer pageSerializer(&amp;resources);
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivemhtmlMHTMLArchiveh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/mhtml/MHTMLArchive.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -40,22 +40,24 @@
</span><span class="cx"> class Page;
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><del>-class MHTMLArchive : public Archive {
</del><ins>+class MHTMLArchive final : public Archive {
</ins><span class="cx"> public:
</span><del>-    Type type() const override { return MHTML; }
-
</del><span class="cx">     static Ref&lt;MHTMLArchive&gt; create();
</span><span class="cx">     static RefPtr&lt;MHTMLArchive&gt; create(const URL&amp;, SharedBuffer&amp;);
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;SharedBuffer&gt; generateMHTMLData(Page*);
</del><ins>+    static RefPtr&lt;SharedBuffer&gt; generateMHTMLData(Page*);
</ins><span class="cx"> 
</span><span class="cx">     virtual ~MHTMLArchive();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static PassRefPtr&lt;SharedBuffer&gt; generateMHTMLData(Page*, bool useBinaryEncoding);
</del><ins>+    friend class MHTMLParser;
</ins><span class="cx"> 
</span><del>-    friend class MHTMLParser;
</del><span class="cx">     MHTMLArchive();
</span><ins>+
+    bool shouldLoadFromArchiveOnly() const final { return true; }
+    bool shouldOverrideBaseURL() const final { return true; }
+    bool shouldUseMainResourceEncoding() const final { return false; }
+    bool shouldUseMainResourceURL() const final { return false; }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderarchivemhtmlMHTMLParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">         RefPtr&lt;ArchiveResource&gt; resource = parseNextPart(*header, String(), String(), endOfArchiveReached);
</span><span class="cx">         if (!resource)
</span><span class="cx">             return nullptr;
</span><del>-        archive-&gt;setMainResource(resource);
</del><ins>+        archive-&gt;setMainResource(resource.releaseNonNull());
</ins><span class="cx">         return archive;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -101,7 +101,7 @@
</span><span class="cx">             // The top-frame is the first frame found, regardless of the nesting level.
</span><span class="cx">             if (subframeArchive-&gt;mainResource())
</span><span class="cx">                 addResourceToArchive(subframeArchive-&gt;mainResource(), archive.get());
</span><del>-            archive-&gt;addSubframeArchive(subframeArchive);
</del><ins>+            archive-&gt;addSubframeArchive(subframeArchive.releaseNonNull());
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -126,13 +126,13 @@
</span><span class="cx"> 
</span><span class="cx">     // The first document suitable resource is the main frame.
</span><span class="cx">     if (!archive-&gt;mainResource()) {
</span><del>-        archive-&gt;setMainResource(resource);
</del><ins>+        archive-&gt;setMainResource(*resource);
</ins><span class="cx">         m_frames.append(archive);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MHTMLArchive&gt; subframe = MHTMLArchive::create();
</span><del>-    subframe-&gt;setMainResource(resource);
</del><ins>+    subframe-&gt;setMainResource(*resource);
</ins><span class="cx">     m_frames.append(subframe);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedCSSStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx">     Copyright (C) 2001 Dirk Mueller (mueller@kde.org)
</span><span class="cx">     Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
</span><span class="cx">     Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
</span><del>-    Copyright (C) 2004, 2005, 2006 Apple Inc.
</del><ins>+    Copyright (C) 2004-2017 Apple Inc. All rights reserved.
</ins><span class="cx"> 
</span><span class="cx">     This library is free software; you can redistribute it and/or
</span><span class="cx">     modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -19,9 +19,6 @@
</span><span class="cx">     along with this library; see the file COPYING.LIB.  If not, write to
</span><span class="cx">     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
</span><span class="cx">     Boston, MA 02110-1301, USA.
</span><del>-
-    This class provides all functionality needed for loading images, style sheets and html
-    pages from the web. It has a memory cache for these objects.
</del><span class="cx"> */
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="lines">@@ -156,7 +153,7 @@
</span><span class="cx">     setDecodedSize(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;StyleSheetContents&gt; CachedCSSStyleSheet::restoreParsedStyleSheet(const CSSParserContext&amp; context, CachePolicy cachePolicy)
</del><ins>+RefPtr&lt;StyleSheetContents&gt; CachedCSSStyleSheet::restoreParsedStyleSheet(const CSSParserContext&amp; context, CachePolicy cachePolicy)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_parsedStyleSheetCache)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -180,7 +177,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CachedCSSStyleSheet::saveParsedStyleSheet(Ref&lt;StyleSheetContents&gt;&amp;&amp; sheet)
</span><span class="cx"> {
</span><del>-    ASSERT(sheet.get().isCacheable());
</del><ins>+    ASSERT(sheet-&gt;isCacheable());
</ins><span class="cx"> 
</span><span class="cx">     if (m_parsedStyleSheetCache)
</span><span class="cx">         m_parsedStyleSheetCache-&gt;removedFromMemoryCache();
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedCSSStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx">     Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
</span><span class="cx">     Copyright (C) 2001 Dirk Mueller &lt;mueller@kde.org&gt;
</span><span class="cx">     Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
</span><del>-    Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
</del><ins>+    Copyright (C) 2004-2017 Apple Inc. All rights reserved.
</ins><span class="cx"> 
</span><span class="cx">     This library is free software; you can redistribute it and/or
</span><span class="cx">     modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -18,9 +18,6 @@
</span><span class="cx">     along with this library; see the file COPYING.LIB.  If not, write to
</span><span class="cx">     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
</span><span class="cx">     Boston, MA 02110-1301, USA.
</span><del>-
-    This class provides all functionality needed for loading images, style sheets and html
-    pages from the web. It has a memory cache for these objects.
</del><span class="cx"> */
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="lines">@@ -29,45 +26,45 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    class CachedResourceClient;
-    class StyleSheetContents;
-    class TextResourceDecoder;
-    struct CSSParserContext;
</del><ins>+class StyleSheetContents;
+class TextResourceDecoder;
</ins><span class="cx"> 
</span><del>-    class CachedCSSStyleSheet final : public CachedResource {
-    public:
-        CachedCSSStyleSheet(CachedResourceRequest&amp;&amp;, SessionID);
-        virtual ~CachedCSSStyleSheet();
</del><ins>+struct CSSParserContext;
</ins><span class="cx"> 
</span><del>-        enum class MIMETypeCheck { Strict, Lax };
-        const String sheetText(MIMETypeCheck = MIMETypeCheck::Strict, bool* hasValidMIMEType = nullptr) const;
</del><ins>+class CachedCSSStyleSheet final : public CachedResource {
+public:
+    CachedCSSStyleSheet(CachedResourceRequest&amp;&amp;, SessionID);
+    virtual ~CachedCSSStyleSheet();
</ins><span class="cx"> 
</span><del>-        PassRefPtr&lt;StyleSheetContents&gt; restoreParsedStyleSheet(const CSSParserContext&amp;, CachePolicy);
-        void saveParsedStyleSheet(Ref&lt;StyleSheetContents&gt;&amp;&amp;);
</del><ins>+    enum class MIMETypeCheck { Strict, Lax };
+    const String sheetText(MIMETypeCheck = MIMETypeCheck::Strict, bool* hasValidMIMEType = nullptr) const;
</ins><span class="cx"> 
</span><del>-    private:
-        bool canUseSheet(MIMETypeCheck, bool* hasValidMIMEType) const;
-        bool mayTryReplaceEncodedData() const final { return true; }
</del><ins>+    RefPtr&lt;StyleSheetContents&gt; restoreParsedStyleSheet(const CSSParserContext&amp;, CachePolicy);
+    void saveParsedStyleSheet(Ref&lt;StyleSheetContents&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><del>-        void didAddClient(CachedResourceClient&amp;) final;
</del><ins>+private:
+    bool canUseSheet(MIMETypeCheck, bool* hasValidMIMEType) const;
+    bool mayTryReplaceEncodedData() const final { return true; }
</ins><span class="cx"> 
</span><del>-        void setEncoding(const String&amp;) final;
-        String encoding() const final;
-        const TextResourceDecoder* textResourceDecoder() const final { return m_decoder.get(); }
-        void finishLoading(SharedBuffer*) final;
-        void destroyDecodedData() final;
</del><ins>+    void didAddClient(CachedResourceClient&amp;) final;
</ins><span class="cx"> 
</span><del>-        void setBodyDataFrom(const CachedResource&amp;) final;
</del><ins>+    void setEncoding(const String&amp;) final;
+    String encoding() const final;
+    const TextResourceDecoder* textResourceDecoder() const final { return m_decoder.get(); }
+    void finishLoading(SharedBuffer*) final;
+    void destroyDecodedData() final;
</ins><span class="cx"> 
</span><del>-    protected:
-        void checkNotify() final;
</del><ins>+    void setBodyDataFrom(const CachedResource&amp;) final;
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;TextResourceDecoder&gt; m_decoder;
-        String m_decodedSheetText;
</del><ins>+protected:
+    void checkNotify() final;
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;StyleSheetContents&gt; m_parsedStyleSheetCache;
-    };
</del><ins>+    RefPtr&lt;TextResourceDecoder&gt; m_decoder;
+    String m_decodedSheetText;
</ins><span class="cx"> 
</span><ins>+    RefPtr&lt;StyleSheetContents&gt; m_parsedStyleSheetCache;
+};
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedCSSStyleSheet, CachedResource::CSSStyleSheet)
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -59,15 +59,17 @@
</span><span class="cx">     return fragmentIdentifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CachedResourceRequest::setInitiator(PassRefPtr&lt;Element&gt; element)
</del><ins>+void CachedResourceRequest::setInitiator(Element&amp; element)
</ins><span class="cx"> {
</span><del>-    ASSERT(!m_initiatorElement &amp;&amp; m_initiatorName.isEmpty());
-    m_initiatorElement = element;
</del><ins>+    ASSERT(!m_initiatorElement);
+    ASSERT(m_initiatorName.isEmpty());
+    m_initiatorElement = &amp;element;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CachedResourceRequest::setInitiator(const AtomicString&amp; name)
</span><span class="cx"> {
</span><del>-    ASSERT(!m_initiatorElement &amp;&amp; m_initiatorName.isEmpty());
</del><ins>+    ASSERT(!m_initiatorElement);
+    ASSERT(m_initiatorName.isEmpty());
</ins><span class="cx">     m_initiatorName = name;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -209,10 +211,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><ins>+
</ins><span class="cx"> void CachedResourceRequest::applyBlockedStatus(const ContentExtensions::BlockedStatus&amp; blockedStatus)
</span><span class="cx"> {
</span><span class="cx">     ContentExtensions::applyBlockedStatusToRequest(blockedStatus, m_resourceRequest);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders(FrameLoader&amp; frameLoader, ReferrerPolicy defaultPolicy)
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceRequest.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceRequest.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cache/CachedResourceRequest.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     const ResourceLoaderOptions&amp; options() const { return m_options; }
</span><span class="cx">     void setOptions(const ResourceLoaderOptions&amp; options) { m_options = options; }
</span><span class="cx">     const std::optional&lt;ResourceLoadPriority&gt;&amp; priority() const { return m_priority; }
</span><del>-    void setInitiator(PassRefPtr&lt;Element&gt;);
</del><ins>+    void setInitiator(Element&amp;);
</ins><span class="cx">     void setInitiator(const AtomicString&amp; name);
</span><span class="cx">     const AtomicString&amp; initiatorName() const;
</span><span class="cx">     bool allowsCaching() const { return m_options.cachingPolicy == CachingPolicy::AllowCaching; }
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercocoaDiskCacheMonitorh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/loader/cocoa/DiskCacheMonitor.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cocoa/DiskCacheMonitor.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cocoa/DiskCacheMonitor.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include &quot;ResourceRequest.h&quot;
-#include &quot;SessionID.h&quot;
-#include &lt;wtf/PassRefPtr.h&gt;
-
-typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
-
-namespace WebCore {
-
-class SharedBuffer;
-
-class DiskCacheMonitor {
-public:
-    static void monitorFileBackingStoreCreation(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef);
-    static PassRefPtr&lt;SharedBuffer&gt; tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef);
-    virtual ~DiskCacheMonitor() { }
-
-protected:
-    DiskCacheMonitor(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef);
-
-    virtual void resourceBecameFileBacked(PassRefPtr&lt;SharedBuffer&gt;);
-
-    const ResourceRequest&amp; resourceRequest() const { return m_resourceRequest; }
-    SessionID sessionID() const { return m_sessionID; }
-
-private:
-    ResourceRequest m_resourceRequest;
-    SessionID m_sessionID;
-};
-
-#if (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 80000) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 1090)
-void DiskCacheMonitor::monitorFileBackingStoreCreation(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef) { }
-PassRefPtr&lt;SharedBuffer&gt; DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef) { return nullptr; }
-#endif
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebCoreloadercocoaDiskCacheMonitorCocoah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2014-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="cx"> #include &quot;SessionID.h&quot;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
</span><span class="cx"> 
</span><span class="lines">@@ -35,21 +34,19 @@
</span><span class="cx"> 
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><del>-class WEBCORE_EXPORT DiskCacheMonitor {
</del><ins>+class DiskCacheMonitor {
</ins><span class="cx"> public:
</span><span class="cx">     static void monitorFileBackingStoreCreation(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef);
</span><del>-    static PassRefPtr&lt;SharedBuffer&gt; tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef);
-    virtual ~DiskCacheMonitor() { }
</del><ins>+    static RefPtr&lt;SharedBuffer&gt; tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef);
</ins><span class="cx"> 
</span><del>-protected:
-    WEBCORE_EXPORT DiskCacheMonitor(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef);
</del><ins>+private:
+    DiskCacheMonitor(const ResourceRequest&amp;, SessionID, CFCachedURLResponseRef);
</ins><span class="cx"> 
</span><del>-    virtual void resourceBecameFileBacked(SharedBuffer&amp;);
</del><ins>+    void resourceBecameFileBacked(SharedBuffer&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const ResourceRequest&amp; resourceRequest() const { return m_resourceRequest; }
</span><span class="cx">     SessionID sessionID() const { return m_sessionID; }
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     ResourceRequest m_resourceRequest;
</span><span class="cx">     SessionID m_sessionID;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercocoaDiskCacheMonitorCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -29,11 +29,8 @@
</span><span class="cx"> #import &quot;CFNetworkSPI.h&quot;
</span><span class="cx"> #import &quot;CachedResource.h&quot;
</span><span class="cx"> #import &quot;MemoryCache.h&quot;
</span><del>-#import &quot;ResourceRequest.h&quot;
-#import &quot;SessionID.h&quot;
</del><span class="cx"> #import &quot;SharedBuffer.h&quot;
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><del>-#import &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #import &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if USE(WEB_THREAD)
</span><span class="lines">@@ -45,9 +42,9 @@
</span><span class="cx"> // The maximum number of seconds we'll try to wait for a resource to be disk cached before we forget the request.
</span><span class="cx"> static const double diskCacheMonitorTimeout = 20;
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef cachedResponse)
</del><ins>+RefPtr&lt;SharedBuffer&gt; DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse(CFCachedURLResponseRef cachedResponse)
</ins><span class="cx"> {
</span><del>-    CFDataRef data = _CFCachedURLResponseGetMemMappedData(cachedResponse);
</del><ins>+    auto data = _CFCachedURLResponseGetMemMappedData(cachedResponse);
</ins><span class="cx">     if (!data)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="lines">@@ -87,8 +84,7 @@
</span><span class="cx">     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * diskCacheMonitorTimeout), dispatch_get_main_queue(), cancelMonitorBlockToRun);
</span><span class="cx"> 
</span><span class="cx">     // Set up the disk caching callback to create the ShareableResource and send it to the WebProcess.
</span><del>-    CFCachedURLResponseCallBackBlock block = ^(CFCachedURLResponseRef cachedResponse)
-    {
</del><ins>+    auto block = ^(CFCachedURLResponseRef cachedResponse) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         // If the monitor isn't there then it timed out before this resource was cached to disk.
</span><span class="cx">         if (!rawMonitor)
</span><span class="lines">@@ -97,7 +93,7 @@
</span><span class="cx">         auto monitor = std::unique_ptr&lt;DiskCacheMonitor&gt;(rawMonitor); // Balanced by &quot;new DiskCacheMonitor&quot; in monitorFileBackingStoreCreation.
</span><span class="cx">         rawMonitor = nullptr;
</span><span class="cx"> 
</span><del>-        RefPtr&lt;SharedBuffer&gt; fileBackedBuffer = DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse(cachedResponse);
</del><ins>+        auto fileBackedBuffer = DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse(cachedResponse);
</ins><span class="cx">         if (!fileBackedBuffer)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="lines">@@ -105,8 +101,7 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> #if USE(WEB_THREAD)
</span><del>-    CFCachedURLResponseCallBackBlock blockToRun = ^(CFCachedURLResponseRef response)
-    {
</del><ins>+    auto blockToRun = ^(CFCachedURLResponseRef response) {
</ins><span class="cx">         CFRetain(response);
</span><span class="cx">         WebThreadRun(^{
</span><span class="cx">             block(response);
</span><span class="lines">@@ -114,7 +109,7 @@
</span><span class="cx">         });
</span><span class="cx">     };
</span><span class="cx"> #else
</span><del>-    CFCachedURLResponseCallBackBlock blockToRun = block;
</del><ins>+    auto blockToRun = block;
</ins><span class="cx"> #endif
</span><span class="cx">     _CFCachedURLResponseSetBecameFileBackedCallBackBlock(cachedResponse, blockToRun, dispatch_get_main_queue());
</span><span class="cx"> }
</span><span class="lines">@@ -121,7 +116,7 @@
</span><span class="cx"> 
</span><span class="cx"> void DiskCacheMonitor::resourceBecameFileBacked(SharedBuffer&amp; fileBackedBuffer)
</span><span class="cx"> {
</span><del>-    CachedResource* resource = MemoryCache::singleton().resourceForRequest(m_resourceRequest, m_sessionID);
</del><ins>+    auto* resource = MemoryCache::singleton().resourceForRequest(m_resourceRequest, m_sessionID);
</ins><span class="cx">     if (!resource)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloadericonIconDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/icon/IconDatabase.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/icon/IconDatabase.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/icon/IconDatabase.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -533,7 +533,7 @@
</span><span class="cx">     delete pageRecord;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void IconDatabase::setIconDataForIconURL(PassRefPtr&lt;SharedBuffer&gt; dataOriginal, const String&amp; iconURLOriginal)
</del><ins>+void IconDatabase::setIconDataForIconURL(SharedBuffer* dataOriginal, const String&amp; iconURLOriginal)
</ins><span class="cx"> {    
</span><span class="cx">     ASSERT_NOT_SYNC_THREAD();
</span><span class="cx">     
</span><span class="lines">@@ -542,7 +542,7 @@
</span><span class="cx">     if (!isOpen() || iconURLOriginal.isEmpty())
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    RefPtr&lt;SharedBuffer&gt; data = dataOriginal ? dataOriginal-&gt;copy() : PassRefPtr&lt;SharedBuffer&gt;(nullptr);
</del><ins>+    auto data = dataOriginal ? RefPtr&lt;SharedBuffer&gt; { dataOriginal-&gt;copy() } : nullptr;
</ins><span class="cx">     String iconURL = iconURLOriginal.isolatedCopy();
</span><span class="cx">     
</span><span class="cx">     Vector&lt;String&gt; pageURLs;
</span><span class="lines">@@ -885,18 +885,17 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Unlike getOrCreatePageURLRecord(), getOrCreateIconRecord() does not mark the icon as &quot;interested in import&quot;
</span><del>-PassRefPtr&lt;IconRecord&gt; IconDatabase::getOrCreateIconRecord(const String&amp; iconURL)
</del><ins>+Ref&lt;IconRecord&gt; IconDatabase::getOrCreateIconRecord(const String&amp; iconURL)
</ins><span class="cx"> {
</span><span class="cx">     // Clients of getOrCreateIconRecord() are required to acquire the m_urlAndIconLock before calling this method
</span><span class="cx">     ASSERT(!m_urlAndIconLock.tryLock());
</span><span class="cx"> 
</span><del>-    if (IconRecord* icon = m_iconURLToRecordMap.get(iconURL))
-        return icon;
</del><ins>+    if (auto* icon = m_iconURLToRecordMap.get(iconURL))
+        return *icon;
</ins><span class="cx"> 
</span><span class="cx">     auto newIcon = IconRecord::create(iconURL);
</span><span class="cx">     m_iconURLToRecordMap.set(iconURL, newIcon.ptr());
</span><del>-
-    return WTFMove(newIcon);
</del><ins>+    return newIcon;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // This method retrieves the existing PageURLRecord, or creates a new one and marks it as &quot;interested in the import&quot; for later notification
</span><span class="lines">@@ -1917,7 +1916,7 @@
</span><span class="cx">     return iconID;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; IconDatabase::getImageDataForIconURLFromSQLDatabase(const String&amp; iconURL)
</del><ins>+RefPtr&lt;SharedBuffer&gt; IconDatabase::getImageDataForIconURLFromSQLDatabase(const String&amp; iconURL)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT_ICON_SYNC_THREAD();
</span><span class="cx">     
</span><span class="lines">@@ -1936,7 +1935,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_getImageDataForIconURLStatement-&gt;reset();
</span><span class="cx">     
</span><del>-    return WTFMove(imageData);
</del><ins>+    return imageData;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void IconDatabase::removeIconFromSQLDatabase(const String&amp; iconURL)
</span></span></pre></div>
<a id="trunkSourceWebCoreloadericonIconDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/icon/IconDatabase.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/icon/IconDatabase.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/icon/IconDatabase.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> // Dummy version of IconDatabase that does nothing.
</span><span class="cx"> class IconDatabase final : public IconDatabaseBase {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><ins>+
</ins><span class="cx"> public:
</span><span class="cx">     static void delayDatabaseCleanup() { }
</span><span class="cx">     static void allowDatabaseCleanup() { }
</span><span class="lines">@@ -70,32 +71,32 @@
</span><span class="cx">     WEBCORE_EXPORT IconDatabase();
</span><span class="cx">     ~IconDatabase();
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setClient(IconDatabaseClient*) override;
</del><ins>+    WEBCORE_EXPORT void setClient(IconDatabaseClient*) final;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT bool open(const String&amp; directory, const String&amp; filename) override;
-    WEBCORE_EXPORT void close() override;
</del><ins>+    WEBCORE_EXPORT bool open(const String&amp; directory, const String&amp; filename) final;
+    WEBCORE_EXPORT void close() final;
</ins><span class="cx">             
</span><del>-    WEBCORE_EXPORT void removeAllIcons() override;
</del><ins>+    WEBCORE_EXPORT void removeAllIcons() final;
</ins><span class="cx"> 
</span><span class="cx">     void readIconForPageURLFromDisk(const String&amp;);
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT Image* defaultIcon(const IntSize&amp;) override;
</del><ins>+    WEBCORE_EXPORT Image* defaultIcon(const IntSize&amp;) final;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void retainIconForPageURL(const String&amp;) override;
-    WEBCORE_EXPORT void releaseIconForPageURL(const String&amp;) override;
-    WEBCORE_EXPORT void setIconDataForIconURL(PassRefPtr&lt;SharedBuffer&gt; data, const String&amp;) override;
-    WEBCORE_EXPORT void setIconURLForPageURL(const String&amp; iconURL, const String&amp; pageURL) override;
</del><ins>+    WEBCORE_EXPORT void retainIconForPageURL(const String&amp;) final;
+    WEBCORE_EXPORT void releaseIconForPageURL(const String&amp;) final;
+    WEBCORE_EXPORT void setIconDataForIconURL(SharedBuffer* data, const String&amp; iconURL) final;
+    WEBCORE_EXPORT void setIconURLForPageURL(const String&amp; iconURL, const String&amp; pageURL) final;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT Image* synchronousIconForPageURL(const String&amp;, const IntSize&amp;) override;
-    NativeImagePtr synchronousNativeIconForPageURL(const String&amp; pageURLOriginal, const IntSize&amp;) override;
-    WEBCORE_EXPORT String synchronousIconURLForPageURL(const String&amp;) override;
-    bool synchronousIconDataKnownForIconURL(const String&amp;) override;
-    WEBCORE_EXPORT IconLoadDecision synchronousLoadDecisionForIconURL(const String&amp;, DocumentLoader*) override;
</del><ins>+    WEBCORE_EXPORT Image* synchronousIconForPageURL(const String&amp;, const IntSize&amp;) final;
+    NativeImagePtr synchronousNativeIconForPageURL(const String&amp; pageURLOriginal, const IntSize&amp;) final;
+    WEBCORE_EXPORT String synchronousIconURLForPageURL(const String&amp;) final;
+    bool synchronousIconDataKnownForIconURL(const String&amp;) final;
+    WEBCORE_EXPORT IconLoadDecision synchronousLoadDecisionForIconURL(const String&amp;, DocumentLoader*) final;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setEnabled(bool) override;
-    WEBCORE_EXPORT bool isEnabled() const override;
</del><ins>+    WEBCORE_EXPORT void setEnabled(bool);
+    WEBCORE_EXPORT bool isEnabled() const final;
</ins><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setPrivateBrowsingEnabled(bool flag) override;
</del><ins>+    WEBCORE_EXPORT void setPrivateBrowsingEnabled(bool flag) final;
</ins><span class="cx">     bool isPrivateBrowsingEnabled() const;
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT static void delayDatabaseCleanup();
</span><span class="lines">@@ -103,10 +104,10 @@
</span><span class="cx">     WEBCORE_EXPORT static void checkIntegrityBeforeOpening();
</span><span class="cx"> 
</span><span class="cx">     // Support for WebCoreStatistics in WebKit
</span><del>-    WEBCORE_EXPORT size_t pageURLMappingCount() override;
-    WEBCORE_EXPORT size_t retainedPageURLCount() override;
-    WEBCORE_EXPORT size_t iconRecordCount() override;
-    WEBCORE_EXPORT size_t iconRecordCountWithData() override;
</del><ins>+    WEBCORE_EXPORT size_t pageURLMappingCount() final;
+    WEBCORE_EXPORT size_t retainedPageURLCount() final;
+    WEBCORE_EXPORT size_t iconRecordCount() final;
+    WEBCORE_EXPORT size_t iconRecordCountWithData() final;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     friend IconDatabaseBase&amp; iconDatabase();
</span><span class="lines">@@ -130,12 +131,12 @@
</span><span class="cx"> 
</span><span class="cx"> // *** Any Thread ***
</span><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT bool isOpen() const override;
-    WEBCORE_EXPORT String databasePath() const override;
</del><ins>+    WEBCORE_EXPORT bool isOpen() const final;
+    WEBCORE_EXPORT String databasePath() const final;
</ins><span class="cx">     WEBCORE_EXPORT static String defaultDatabaseFilename();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    PassRefPtr&lt;IconRecord&gt; getOrCreateIconRecord(const String&amp; iconURL);
</del><ins>+    Ref&lt;IconRecord&gt; getOrCreateIconRecord(const String&amp; iconURL);
</ins><span class="cx">     PageURLRecord* getOrCreatePageURLRecord(const String&amp; pageURL);
</span><span class="cx">     
</span><span class="cx">     bool m_isEnabled;
</span><span class="lines">@@ -178,7 +179,7 @@
</span><span class="cx"> 
</span><span class="cx"> // *** Sync Thread Only ***
</span><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT bool shouldStopThreadActivity() const override;
</del><ins>+    WEBCORE_EXPORT bool shouldStopThreadActivity() const final;
</ins><span class="cx"> 
</span><span class="cx"> private:    
</span><span class="cx">     static void iconDatabaseSyncThreadStart(void *);
</span><span class="lines">@@ -213,7 +214,7 @@
</span><span class="cx">     void removePageURLFromSQLDatabase(const String&amp; pageURL);
</span><span class="cx">     int64_t getIconIDForIconURLFromSQLDatabase(const String&amp; iconURL);
</span><span class="cx">     int64_t addIconURLToSQLDatabase(const String&amp;);
</span><del>-    PassRefPtr&lt;SharedBuffer&gt; getImageDataForIconURLFromSQLDatabase(const String&amp; iconURL);
</del><ins>+    RefPtr&lt;SharedBuffer&gt; getImageDataForIconURLFromSQLDatabase(const String&amp; iconURL);
</ins><span class="cx">     void removeIconFromSQLDatabase(const String&amp; iconURL);
</span><span class="cx">     void writeIconSnapshotToSQLDatabase(const IconSnapshot&amp;);    
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloadericonIconDatabaseBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/icon/IconDatabaseBase.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/icon/IconDatabaseBase.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/icon/IconDatabaseBase.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include &quot;NativeImage.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -39,11 +38,7 @@
</span><span class="cx"> class IntSize;
</span><span class="cx"> class SharedBuffer;
</span><span class="cx"> 
</span><del>-enum IconLoadDecision {
-    IconLoadYes,
-    IconLoadNo,
-    IconLoadUnknown
-};
</del><ins>+enum IconLoadDecision { IconLoadYes, IconLoadNo, IconLoadUnknown };
</ins><span class="cx"> 
</span><span class="cx"> class CallbackBase : public RefCounted&lt;CallbackBase&gt; {
</span><span class="cx"> public:
</span><span class="lines">@@ -134,7 +129,7 @@
</span><span class="cx">         m_callback(result, context());
</span><span class="cx">         m_callback = nullptr;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void invalidate()
</span><span class="cx">     {
</span><span class="cx">         m_callback = nullptr;
</span><span class="lines">@@ -151,26 +146,22 @@
</span><span class="cx">     CallbackFunction m_callback;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-typedef EnumCallback&lt;IconLoadDecision&gt; IconLoadDecisionCallback;
-typedef ObjectCallback&lt;SharedBuffer*&gt; IconDataCallback;
</del><ins>+using IconLoadDecisionCallback = EnumCallback&lt;IconLoadDecision&gt;;
+using IconDataCallback = ObjectCallback&lt;SharedBuffer*&gt;;
</ins><span class="cx"> 
</span><span class="cx"> class WEBCORE_EXPORT IconDatabaseBase {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(IconDatabaseBase);
</span><span class="cx"> 
</span><del>-protected:
-    IconDatabaseBase() { }
-
</del><span class="cx"> public:
</span><span class="cx">     virtual ~IconDatabaseBase() { }
</span><span class="cx"> 
</span><del>-    // Used internally by WebCore
</del><span class="cx">     virtual bool isEnabled() const { return false; }
</span><del>-        
</del><ins>+
</ins><span class="cx">     virtual void retainIconForPageURL(const String&amp;) { }
</span><span class="cx">     virtual void releaseIconForPageURL(const String&amp;) { }
</span><span class="cx"> 
</span><del>-    virtual void setIconURLForPageURL(const String&amp;, const String&amp;) { }
-    virtual void setIconDataForIconURL(PassRefPtr&lt;SharedBuffer&gt;, const String&amp;) { }
</del><ins>+    virtual void setIconURLForPageURL(const String&amp; /*iconURL*/, const String&amp; /*pageURL*/) { }
+    virtual void setIconDataForIconURL(SharedBuffer*, const String&amp; /*iconURL*/) { }
</ins><span class="cx"> 
</span><span class="cx">     // Synchronous calls used internally by WebCore.
</span><span class="cx">     // Usage should be replaced by asynchronous calls.
</span><span class="lines">@@ -182,12 +173,12 @@
</span><span class="cx"> 
</span><span class="cx">     // Asynchronous calls we should use to replace the above when supported.
</span><span class="cx">     virtual bool supportsAsynchronousMode() { return false; }
</span><del>-    virtual void loadDecisionForIconURL(const String&amp;, PassRefPtr&lt;IconLoadDecisionCallback&gt;) { }
-    virtual void iconDataForIconURL(const String&amp;, PassRefPtr&lt;IconDataCallback&gt;) { }
-    
</del><ins>+    virtual void loadDecisionForIconURL(const String&amp;, IconLoadDecisionCallback&amp;) { }
+    virtual void iconDataForIconURL(const String&amp;, IconDataCallback&amp;) { }
</ins><span class="cx"> 
</span><span class="cx">     // Used within one or more WebKit ports.
</span><span class="cx">     // We should try to remove these dependencies from the IconDatabaseBase class.
</span><ins>+
</ins><span class="cx">     virtual void setEnabled(bool) { }
</span><span class="cx"> 
</span><span class="cx">     virtual Image* defaultIcon(const IntSize&amp;) { return nullptr; }
</span><span class="lines">@@ -205,10 +196,12 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void setPrivateBrowsingEnabled(bool) { }
</span><span class="cx">     virtual void setClient(IconDatabaseClient*) { }
</span><del>-    
</del><ins>+
</ins><span class="cx">     virtual bool isOpen() const { return false; }
</span><span class="cx">     virtual String databasePath() const;
</span><span class="cx"> 
</span><ins>+protected:
+    IconDatabaseBase() = default;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // Functions to get/set the global icon database.
</span></span></pre></div>
<a id="trunkSourceWebCoreloadericonPageURLRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/icon/PageURLRecord.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/icon/PageURLRecord.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/icon/PageURLRecord.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -35,22 +35,22 @@
</span><span class="cx"> 
</span><span class="cx"> PageURLRecord::PageURLRecord(const String&amp; pageURL)
</span><span class="cx">     : m_pageURL(pageURL)
</span><del>-    , m_retainCount(0)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PageURLRecord::~PageURLRecord()
</span><span class="cx"> {
</span><del>-    setIconRecord(nullptr);
</del><ins>+    if (m_iconRecord)
+        m_iconRecord-&gt;m_retainingPageURLs.remove(m_pageURL);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageURLRecord::setIconRecord(PassRefPtr&lt;IconRecord&gt; icon)
</del><ins>+void PageURLRecord::setIconRecord(RefPtr&lt;IconRecord&gt;&amp;&amp; icon)
</ins><span class="cx"> {
</span><span class="cx">     if (m_iconRecord)
</span><span class="cx">         m_iconRecord-&gt;m_retainingPageURLs.remove(m_pageURL);
</span><del>-        
-    m_iconRecord = icon;
-    
</del><ins>+
+    m_iconRecord = WTFMove(icon);
+
</ins><span class="cx">     if (m_iconRecord)
</span><span class="cx">         m_iconRecord-&gt;m_retainingPageURLs.add(m_pageURL);
</span><span class="cx"> }
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx">     
</span><span class="cx"> PageURLSnapshot PageURLRecord::snapshot(bool forDeletion) const 
</span><span class="cx"> {
</span><del>-    return PageURLSnapshot(m_pageURL, (m_iconRecord &amp;&amp; !forDeletion) ? m_iconRecord-&gt;iconURL() : String());
</del><ins>+    return { m_pageURL, (m_iconRecord &amp;&amp; !forDeletion) ? m_iconRecord-&gt;iconURL() : String() };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloadericonPageURLRecordh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/icon/PageURLRecord.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/icon/PageURLRecord.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/loader/icon/PageURLRecord.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx">     inline String url() const { return m_pageURL; }
</span><span class="cx">     
</span><del>-    void setIconRecord(PassRefPtr&lt;IconRecord&gt;);
</del><ins>+    void setIconRecord(RefPtr&lt;IconRecord&gt;&amp;&amp;);
</ins><span class="cx">     IconRecord* iconRecord() { return m_iconRecord.get(); }
</span><span class="cx"> 
</span><span class="cx">     PageURLSnapshot snapshot(bool forDeletion = false) const;
</span><span class="lines">@@ -82,12 +82,12 @@
</span><span class="cx">         return m_retainCount &gt; 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    inline int retainCount() const { return m_retainCount; }
</del><ins>+    int retainCount() const { return m_retainCount; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     String m_pageURL;
</span><span class="cx">     RefPtr&lt;IconRecord&gt; m_iconRecord;
</span><del>-    int m_retainCount;
</del><ins>+    int m_retainCount { 0 };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Chrome.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Chrome.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/Chrome.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -431,7 +431,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void Chrome::runOpenPanel(Frame* frame, PassRefPtr&lt;FileChooser&gt; fileChooser)
</del><ins>+void Chrome::runOpenPanel(Frame&amp; frame, FileChooser&amp; fileChooser)
</ins><span class="cx"> {
</span><span class="cx">     notifyPopupOpeningObservers();
</span><span class="cx">     m_client.runOpenPanel(frame, fileChooser);
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Chrome.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Chrome.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/Chrome.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx">     std::unique_ptr&lt;ColorChooser&gt; createColorChooser(ColorChooserClient*, const Color&amp; initialColor);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt;);
</del><ins>+    void runOpenPanel(Frame&amp;, FileChooser&amp;);
</ins><span class="cx">     void loadIconForFiles(const Vector&lt;String&gt;&amp;, FileIconLoader&amp;);
</span><span class="cx"> 
</span><span class="cx">     void dispatchViewportPropertiesDidChange(const ViewportArguments&amp;) const;
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ChromeClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ChromeClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/ChromeClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx">     virtual std::unique_ptr&lt;ColorChooser&gt; createColorChooser(ColorChooserClient*, const Color&amp;) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt;) = 0;
</del><ins>+    virtual void runOpenPanel(Frame&amp;, FileChooser&amp;) = 0;
</ins><span class="cx">     // Asynchronous request to load an icon for specified filenames.
</span><span class="cx">     virtual void loadIconForFiles(const Vector&lt;String&gt;&amp;, FileIconLoader&amp;) = 0;
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/DOMWindow.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -769,7 +769,7 @@
</span><span class="cx">     if (!isCurrentlyDisplayedInFrame())
</span><span class="cx">         return nullptr;
</span><span class="cx">     if (!m_applicationCache)
</span><del>-        m_applicationCache = DOMApplicationCache::create(m_frame);
</del><ins>+        m_applicationCache = DOMApplicationCache::create(*m_frame);
</ins><span class="cx">     return m_applicationCache.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2079,7 +2079,7 @@
</span><span class="cx">     // We want a new history item if we are processing a user gesture.
</span><span class="cx">     LockHistory lockHistory = (locking != LockHistoryBasedOnGestureState || !ScriptController::processingUserGesture()) ? LockHistory::Yes : LockHistory::No;
</span><span class="cx">     LockBackForwardList lockBackForwardList = (locking != LockHistoryBasedOnGestureState) ? LockBackForwardList::Yes : LockBackForwardList::No;
</span><del>-    m_frame-&gt;navigationScheduler().scheduleLocationChange(activeDocument, activeDocument-&gt;securityOrigin(),
</del><ins>+    m_frame-&gt;navigationScheduler().scheduleLocationChange(*activeDocument, activeDocument-&gt;securityOrigin(),
</ins><span class="cx">         // FIXME: What if activeDocument()-&gt;frame() is 0?
</span><span class="cx">         completedURL, activeDocument-&gt;frame()-&gt;loader().outgoingReferrer(),
</span><span class="cx">         lockHistory, lockBackForwardList);
</span><span class="lines">@@ -2205,7 +2205,7 @@
</span><span class="cx">         newFrame-&gt;loader().changeLocation(frameRequest);
</span><span class="cx">     } else if (!urlString.isEmpty()) {
</span><span class="cx">         LockHistory lockHistory = ScriptController::processingUserGesture() ? LockHistory::No : LockHistory::Yes;
</span><del>-        newFrame-&gt;navigationScheduler().scheduleLocationChange(activeWindow.document(), activeWindow.document()-&gt;securityOrigin(), completedURL, referrer, lockHistory, LockBackForwardList::No);
</del><ins>+        newFrame-&gt;navigationScheduler().scheduleLocationChange(*activeWindow.document(), activeWindow.document()-&gt;securityOrigin(), completedURL, referrer, lockHistory, LockBackForwardList::No);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Navigating the new frame could result in it being detached from its page by a navigation policy delegate.
</span><span class="lines">@@ -2215,28 +2215,26 @@
</span><span class="cx">     return newFrame;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;DOMWindow&gt; DOMWindow::open(const String&amp; urlString, const AtomicString&amp; frameName, const String&amp; windowFeaturesString,
-    DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+RefPtr&lt;DOMWindow&gt; DOMWindow::open(const String&amp; urlString, const AtomicString&amp; frameName, const String&amp; windowFeaturesString, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</ins><span class="cx"> {
</span><span class="cx">     if (!isCurrentlyDisplayedInFrame())
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    Document* activeDocument = activeWindow.document();
</del><ins>+    auto* activeDocument = activeWindow.document();
</ins><span class="cx">     if (!activeDocument)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    Frame* firstFrame = firstWindow.frame();
</del><ins>+    auto* firstFrame = firstWindow.frame();
</ins><span class="cx">     if (!firstFrame)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx">     if (firstFrame-&gt;document()
</span><del>-        &amp;&amp; firstFrame-&gt;mainFrame().page()
</del><ins>+        &amp;&amp; firstFrame-&gt;page()
</ins><span class="cx">         &amp;&amp; firstFrame-&gt;mainFrame().document()
</span><span class="cx">         &amp;&amp; firstFrame-&gt;mainFrame().document()-&gt;loader()) {
</span><del>-        ResourceLoadInfo resourceLoadInfo = { firstFrame-&gt;document()-&gt;completeURL(urlString), firstFrame-&gt;mainFrame().document()-&gt;url(), ResourceType::Popup };
-        Vector&lt;ContentExtensions::Action&gt; actions = firstFrame-&gt;mainFrame().page()-&gt;userContentProvider().actionsForResourceLoad(resourceLoadInfo, *firstFrame-&gt;mainFrame().document()-&gt;loader());
-        for (const ContentExtensions::Action&amp; action : actions) {
</del><ins>+        ResourceLoadInfo resourceLoadInfo { firstFrame-&gt;document()-&gt;completeURL(urlString), firstFrame-&gt;mainFrame().document()-&gt;url(), ResourceType::Popup };
+        for (auto&amp; action : firstFrame-&gt;page()-&gt;userContentProvider().actionsForResourceLoad(resourceLoadInfo, *firstFrame-&gt;mainFrame().document()-&gt;loader())) {
</ins><span class="cx">             if (action.type() == ContentExtensions::ActionType::BlockLoad)
</span><span class="cx">                 return nullptr;
</span><span class="cx">         }
</span><span class="lines">@@ -2276,7 +2274,7 @@
</span><span class="cx">         // For whatever reason, Firefox uses the first window rather than the active window to
</span><span class="cx">         // determine the outgoing referrer. We replicate that behavior here.
</span><span class="cx">         LockHistory lockHistory = ScriptController::processingUserGesture() ? LockHistory::No : LockHistory::Yes;
</span><del>-        targetFrame-&gt;navigationScheduler().scheduleLocationChange(activeDocument, activeDocument-&gt;securityOrigin(), completedURL, firstFrame-&gt;loader().outgoingReferrer(),
</del><ins>+        targetFrame-&gt;navigationScheduler().scheduleLocationChange(*activeDocument, activeDocument-&gt;securityOrigin(), completedURL, firstFrame-&gt;loader().outgoingReferrer(),
</ins><span class="cx">             lockHistory, LockBackForwardList::No);
</span><span class="cx">         return targetFrame-&gt;document()-&gt;domWindow();
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorepageEditorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EditorClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EditorClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/EditorClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -104,8 +104,8 @@
</span><span class="cx">     virtual void discardedComposition(Frame*) = 0;
</span><span class="cx">     virtual void canceledComposition() = 0;
</span><span class="cx"> 
</span><del>-    virtual void registerUndoStep(PassRefPtr&lt;UndoStep&gt;) = 0;
-    virtual void registerRedoStep(PassRefPtr&lt;UndoStep&gt;) = 0;
</del><ins>+    virtual void registerUndoStep(UndoStep&amp;) = 0;
+    virtual void registerRedoStep(UndoStep&amp;) = 0;
</ins><span class="cx">     virtual void clearUndoRedoOperations() = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual bool canCopyCut(Frame*, bool defaultValue) const = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorepageHistorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/History.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/History.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/History.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -207,10 +207,10 @@
</span><span class="cx">         m_frame-&gt;document()-&gt;updateURLForPushOrReplaceState(fullURL);
</span><span class="cx"> 
</span><span class="cx">     if (stateObjectType == StateObjectType::Push) {
</span><del>-        m_frame-&gt;loader().history().pushState(data, title, fullURL.string());
</del><ins>+        m_frame-&gt;loader().history().pushState(WTFMove(data), title, fullURL.string());
</ins><span class="cx">         m_frame-&gt;loader().client().dispatchDidPushStateWithinPage();
</span><span class="cx">     } else if (stateObjectType == StateObjectType::Replace) {
</span><del>-        m_frame-&gt;loader().history().replaceState(data, title, fullURL.string());
</del><ins>+        m_frame-&gt;loader().history().replaceState(WTFMove(data), title, fullURL.string());
</ins><span class="cx">         m_frame-&gt;loader().client().dispatchDidReplaceStateWithinPage();
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageLocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Location.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Location.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/page/Location.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -221,9 +221,10 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_frame)
</span><span class="cx">         return;
</span><del>-    URL url = m_frame-&gt;document()-&gt;url();
-    String oldFragmentIdentifier = url.fragmentIdentifier();
-    String newFragmentIdentifier = hash;
</del><ins>+    ASSERT(m_frame-&gt;document());
+    auto url = m_frame-&gt;document()-&gt;url();
+    auto oldFragmentIdentifier = url.fragmentIdentifier();
+    auto newFragmentIdentifier = hash;
</ins><span class="cx">     if (hash[0] == '#')
</span><span class="cx">         newFragmentIdentifier = hash.substring(1);
</span><span class="cx">     url.setFragmentIdentifier(newFragmentIdentifier);
</span><span class="lines">@@ -246,7 +247,9 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_frame)
</span><span class="cx">         return;
</span><del>-    // Note: We call DOMWindow::setLocation directly here because replace() always operates on the current frame.
</del><ins>+    ASSERT(m_frame-&gt;document());
+    ASSERT(m_frame-&gt;document()-&gt;domWindow());
+    // We call DOMWindow::setLocation directly here because replace() always operates on the current frame.
</ins><span class="cx">     m_frame-&gt;document()-&gt;domWindow()-&gt;setLocation(activeWindow, firstWindow, url, LockHistoryAndBackForwardList);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -254,26 +257,38 @@
</span><span class="cx"> {
</span><span class="cx">     if (!m_frame)
</span><span class="cx">         return;
</span><ins>+
+    ASSERT(activeWindow.document());
+    ASSERT(m_frame-&gt;document());
+    ASSERT(m_frame-&gt;document()-&gt;domWindow());
+
+    auto&amp; activeDocument = *activeWindow.document();
+    auto&amp; targetDocument = *m_frame-&gt;document();
+
</ins><span class="cx">     // FIXME: It's not clear this cross-origin security check is valuable.
</span><span class="cx">     // We allow one page to change the location of another. Why block attempts to reload?
</span><span class="cx">     // Other location operations simply block use of JavaScript URLs cross origin.
</span><del>-    DOMWindow* targetWindow = m_frame-&gt;document()-&gt;domWindow();
-    if (!activeWindow.document()-&gt;securityOrigin()-&gt;canAccess(m_frame-&gt;document()-&gt;securityOrigin())) {
-        targetWindow-&gt;printErrorMessage(targetWindow-&gt;crossDomainAccessErrorMessage(activeWindow));
</del><ins>+    if (!activeDocument.securityOrigin()-&gt;canAccess(targetDocument.securityOrigin())) {
+        auto&amp; targetWindow = *targetDocument.domWindow();
+        targetWindow.printErrorMessage(targetWindow.crossDomainAccessErrorMessage(activeWindow));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    if (protocolIsJavaScript(m_frame-&gt;document()-&gt;url()))
</del><ins>+
+    if (protocolIsJavaScript(targetDocument.url()))
</ins><span class="cx">         return;
</span><del>-    m_frame-&gt;navigationScheduler().scheduleRefresh(activeWindow.document());
</del><ins>+
+    m_frame-&gt;navigationScheduler().scheduleRefresh(activeDocument);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Location::setLocation(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; url)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_frame);
</span><del>-    Frame* frame = m_frame-&gt;loader().findFrameForNavigation(String(), activeWindow.document());
-    if (!frame)
</del><ins>+    auto* targetFrame = m_frame-&gt;loader().findFrameForNavigation({ }, activeWindow.document());
+    if (!targetFrame)
</ins><span class="cx">         return;
</span><del>-    frame-&gt;document()-&gt;domWindow()-&gt;setLocation(activeWindow, firstWindow, url);
</del><ins>+    ASSERT(targetFrame-&gt;document());
+    ASSERT(targetFrame-&gt;document()-&gt;domWindow());
+    targetFrame-&gt;document()-&gt;domWindow()-&gt;setLocation(activeWindow, firstWindow, url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URL.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URL.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/platform/URL.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1126,17 +1126,17 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void URL::setFragmentIdentifier(const String&amp; s)
</del><ins>+void URL::setFragmentIdentifier(StringView identifier)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_isValid)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: Non-ASCII characters must be encoded and escaped to match parse() expectations.
-    if (URLParser::enabled()) {
-        URLParser parser(makeString(m_string.left(m_queryEnd), &quot;#&quot;, s));
-        *this = parser.result();
-    } else
-        parse(m_string.left(m_queryEnd) + &quot;#&quot; + s);
</del><ins>+    // FIXME: Optimize the case where the identifier already happens to be equal to what was passed?
+    // FIXME: Is it correct to do this without encoding and escaping non-ASCII characters?
+    if (URLParser::enabled())
+        *this = URLParser { makeString(StringView { m_string }.substring(0, m_queryEnd), '#', identifier) }.result();
+    else
+        parse(m_string.left(m_queryEnd) + &quot;#&quot; + identifier);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void URL::removeFragmentIdentifier()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URL.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URL.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/platform/URL.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx">     // URL (with nothing after it). To clear the query, pass a null string.
</span><span class="cx">     void setQuery(const String&amp;);
</span><span class="cx"> 
</span><del>-    void setFragmentIdentifier(const String&amp;);
</del><ins>+    void setFragmentIdentifier(StringView);
</ins><span class="cx">     void removeFragmentIdentifier();
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT friend bool equalIgnoringFragmentIdentifier(const URL&amp;, const URL&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorereplayReplayInputDispatchMethodscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/replay/ReplayInputDispatchMethods.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/replay/ReplayInputDispatchMethods.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/replay/ReplayInputDispatchMethods.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -50,8 +50,9 @@
</span><span class="cx"> // Navigation inputs.
</span><span class="cx"> void InitialNavigation::dispatch(ReplayController&amp; controller)
</span><span class="cx"> {
</span><del>-    Frame&amp; frame = controller.page().mainFrame();
-    frame.navigationScheduler().scheduleLocationChange(frame.document(), m_securityOrigin.get(), m_url, m_referrer);
</del><ins>+    auto&amp; frame = controller.page().mainFrame();
+    ASSERT(frame.document());
+    frame.navigationScheduler().scheduleLocationChange(*frame.document(), m_securityOrigin.get(), m_url, m_referrer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HandleKeyPress::dispatch(ReplayController&amp; controller)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEImageElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">     options.contentSecurityPolicyImposition = isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck;
</span><span class="cx"> 
</span><span class="cx">     CachedResourceRequest request(ResourceRequest(document().completeURL(href())), options);
</span><del>-    request.setInitiator(this);
</del><ins>+    request.setInitiator(*this);
</ins><span class="cx">     m_cachedImage = document().cachedResourceLoader().requestImage(WTFMove(request));
</span><span class="cx"> 
</span><span class="cx">     if (m_cachedImage)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontFaceUriElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> 
</span><span class="cx">         CachedResourceLoader&amp; cachedResourceLoader = document().cachedResourceLoader();
</span><span class="cx">         CachedResourceRequest request(ResourceRequest(document().completeURL(href)), options);
</span><del>-        request.setInitiator(this);
</del><ins>+        request.setInitiator(*this);
</ins><span class="cx">         m_cachedFont = cachedResourceLoader.requestFont(WTFMove(request), isSVGFontTarget(*this));
</span><span class="cx">         if (m_cachedFont) {
</span><span class="cx">             m_cachedFont-&gt;addClient(*this);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -572,7 +572,7 @@
</span><span class="cx">         options.contentSecurityPolicyImposition = isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck;
</span><span class="cx">         options.mode = FetchOptions::Mode::SameOrigin;
</span><span class="cx">         CachedResourceRequest request { ResourceRequest { externalDocumentURL }, options };
</span><del>-        request.setInitiator(this);
</del><ins>+        request.setInitiator(*this);
</ins><span class="cx">         m_externalDocument = document().cachedResourceLoader().requestSVGDocument(WTFMove(request));
</span><span class="cx">         if (m_externalDocument)
</span><span class="cx">             m_externalDocument-&gt;addClient(*this);
</span></span></pre></div>
<a id="trunkSourceWebKitiosChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ios/ChangeLog (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ios/ChangeLog        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/ios/ChangeLog        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2017-01-15  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove PassRefPtr from &quot;loader&quot; directory of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=167055
+
+        Reviewed by Alex Christensen.
+
+        * WebCoreSupport/WebChromeClientIOS.h: Updated runOpenPanel to take references.
+        Made class final and most functions private and final.
+        * WebCoreSupport/WebChromeClientIOS.mm:
+        (WebChromeClientIOS::runOpenPanel): Updated to take references.
+
</ins><span class="cx"> 2016-12-30  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove PassRefPtr use from the &quot;dom&quot; directory, related cleanup
</span></span></pre></div>
<a id="trunkSourceWebKitiosWebCoreSupportWebChromeClientIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -24,73 +24,77 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> #import &quot;WebChromeClient.h&quot;
</span><span class="cx"> 
</span><del>-class WebChromeClientIOS : public WebChromeClient {
</del><ins>+class WebChromeClientIOS final : public WebChromeClient {
</ins><span class="cx"> public:
</span><del>-    WebChromeClientIOS(WebView *webView)
</del><ins>+    WebChromeClientIOS(WebView* webView)
</ins><span class="cx">         : WebChromeClient(webView)
</span><del>-        , m_formNotificationSuppressions(0) { }
-    
-    void setWindowRect(const WebCore::FloatRect&amp;) override;
-    WebCore::FloatRect windowRect() override;
-    void setStatusbarText(const WTF::String&amp;) override { }
</del><ins>+    {
+    }
</ins><span class="cx"> 
</span><del>-    void focus() override;
-    void takeFocus(WebCore::FocusDirection) override { }
</del><ins>+private:
+    void setWindowRect(const WebCore::FloatRect&amp;) final;
+    WebCore::FloatRect windowRect() final;
+    void setStatusbarText(const WTF::String&amp;) final { }
</ins><span class="cx"> 
</span><del>-    void runJavaScriptAlert(WebCore::Frame*, const WTF::String&amp;) override;
-    bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&amp;) override;
-    bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String&amp; message, const WTF::String&amp; defaultValue, WTF::String&amp; result) override;
</del><ins>+    void focus() final;
+    void takeFocus(WebCore::FocusDirection) final { }
</ins><span class="cx"> 
</span><del>-    void runOpenPanel(WebCore::Frame*, PassRefPtr&lt;WebCore::FileChooser&gt;) override;
</del><ins>+    void runJavaScriptAlert(WebCore::Frame*, const WTF::String&amp;) final;
+    bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&amp;) final;
+    bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String&amp; message, const WTF::String&amp; defaultValue, WTF::String&amp; result) final;
</ins><span class="cx"> 
</span><ins>+    void runOpenPanel(WebCore::Frame&amp;, WebCore::FileChooser&amp;) final;
+
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><del>-    void didPreventDefaultForEvent() override;
</del><ins>+    void didPreventDefaultForEvent() final;
</ins><span class="cx"> #endif
</span><del>-    void didReceiveMobileDocType(bool) override;
-    void setNeedsScrollNotifications(WebCore::Frame*, bool) override;
-    void observedContentChange(WebCore::Frame*) override;
-    void clearContentChangeObservers(WebCore::Frame*) override;
-    WebCore::FloatSize screenSize() const override;
-    WebCore::FloatSize availableScreenSize() const override;
-    void dispatchViewportPropertiesDidChange(const WebCore::ViewportArguments&amp;) const override;
-    void notifyRevealedSelectionByScrollingFrame(WebCore::Frame*) override;
-    bool isStopping() override;
-    void didLayout(LayoutType) override;
-    void didStartOverflowScroll() override;
-    void didEndOverflowScroll() override;
</del><span class="cx"> 
</span><del>-    void suppressFormNotifications() override;
-    void restoreFormNotifications() override;
</del><ins>+    void didReceiveMobileDocType(bool) final;
+    void setNeedsScrollNotifications(WebCore::Frame*, bool) final;
+    void observedContentChange(WebCore::Frame*) final;
+    void clearContentChangeObservers(WebCore::Frame*) final;
+    WebCore::FloatSize screenSize() const final;
+    WebCore::FloatSize availableScreenSize() const final;
+    void dispatchViewportPropertiesDidChange(const WebCore::ViewportArguments&amp;) const final;
+    void notifyRevealedSelectionByScrollingFrame(WebCore::Frame*) final;
+    bool isStopping() final;
+    void didLayout(LayoutType) final;
+    void didStartOverflowScroll() final;
+    void didEndOverflowScroll() final;
+
+    void suppressFormNotifications() final;
+    void restoreFormNotifications() final;
</ins><span class="cx">     
</span><del>-    void elementDidFocus(const WebCore::Node*) override;
-    void elementDidBlur(const WebCore::Node*) override;
</del><ins>+    void elementDidFocus(const WebCore::Node*) final;
+    void elementDidBlur(const WebCore::Node*) final;
</ins><span class="cx"> 
</span><del>-    void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
</del><ins>+    void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) final;
</ins><span class="cx"> 
</span><del>-    void didFlushCompositingLayers() override;
</del><ins>+    void didFlushCompositingLayers() final;
</ins><span class="cx"> 
</span><del>-    void updateViewportConstrainedLayers(HashMap&lt;PlatformLayer*, std::unique_ptr&lt;WebCore::ViewportConstraints&gt;&gt;&amp;, HashMap&lt;PlatformLayer*, PlatformLayer*&gt;&amp;) override;
</del><ins>+    void updateViewportConstrainedLayers(HashMap&lt;PlatformLayer*, std::unique_ptr&lt;WebCore::ViewportConstraints&gt;&gt;&amp;, HashMap&lt;PlatformLayer*, PlatformLayer*&gt;&amp;) final;
</ins><span class="cx"> 
</span><del>-    bool fetchCustomFixedPositionLayoutRect(WebCore::IntRect&amp;) override;
-    void addOrUpdateScrollingLayer(WebCore::Node*, PlatformLayer*, PlatformLayer*, const WebCore::IntSize&amp;, bool allowHorizontalScrollbar, bool allowVerticalScrollbar) override;
-    void removeScrollingLayer(WebCore::Node*, PlatformLayer*, PlatformLayer*) override;
</del><ins>+    bool fetchCustomFixedPositionLayoutRect(WebCore::IntRect&amp;) final;
+    void addOrUpdateScrollingLayer(WebCore::Node*, PlatformLayer*, PlatformLayer*, const WebCore::IntSize&amp;, bool allowHorizontalScrollbar, bool allowVerticalScrollbar) final;
+    void removeScrollingLayer(WebCore::Node*, PlatformLayer*, PlatformLayer*) final;
</ins><span class="cx"> 
</span><del>-    bool selectItemWritingDirectionIsNatural() override;
-    bool selectItemAlignmentFollowsMenuWritingDirection() override;
-    RefPtr&lt;WebCore::PopupMenu&gt; createPopupMenu(WebCore::PopupMenuClient*) const override;
-    RefPtr&lt;WebCore::SearchPopupMenu&gt; createSearchPopupMenu(WebCore::PopupMenuClient*) const override;
</del><ins>+    bool selectItemWritingDirectionIsNatural() final;
+    bool selectItemAlignmentFollowsMenuWritingDirection() final;
+    RefPtr&lt;WebCore::PopupMenu&gt; createPopupMenu(WebCore::PopupMenuClient*) const final;
+    RefPtr&lt;WebCore::SearchPopupMenu&gt; createSearchPopupMenu(WebCore::PopupMenuClient*) const final;
</ins><span class="cx"> 
</span><del>-    void webAppOrientationsUpdated() override;
-    void focusedElementChanged(WebCore::Element*) override;
-    void showPlaybackTargetPicker(bool hasVideo) override;
</del><ins>+    void webAppOrientationsUpdated() final;
+    void focusedElementChanged(WebCore::Element*) final;
+    void showPlaybackTargetPicker(bool hasVideo) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(ORIENTATION_EVENTS)
</span><del>-    int deviceOrientation() const override;
</del><ins>+    int deviceOrientation() const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-private:
-    int m_formNotificationSuppressions;
</del><ins>+    int m_formNotificationSuppressions { 0 };
</ins><span class="cx"> };
</span><ins>+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKitiosWebCoreSupportWebChromeClientIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/ios/WebCoreSupport/WebChromeClientIOS.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -23,9 +23,10 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#if PLATFORM(IOS)
</del><span class="cx"> #import &quot;WebChromeClientIOS.h&quot;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+
</ins><span class="cx"> #import &quot;DOMNodeInternal.h&quot;
</span><span class="cx"> #import &quot;PopupMenuIOS.h&quot;
</span><span class="cx"> #import &quot;SearchPopupMenuIOS.h&quot;
</span><span class="lines">@@ -43,9 +44,6 @@
</span><span class="cx"> #import &quot;WebView.h&quot;
</span><span class="cx"> #import &quot;WebViewInternal.h&quot;
</span><span class="cx"> #import &quot;WebViewPrivate.h&quot;
</span><del>-
-#import &lt;wtf/HashMap.h&gt;
-#import &lt;wtf/RefPtr.h&gt;
</del><span class="cx"> #import &lt;WebCore/FileChooser.h&gt;
</span><span class="cx"> #import &lt;WebCore/FloatRect.h&gt;
</span><span class="cx"> #import &lt;WebCore/Frame.h&gt;
</span><span class="lines">@@ -61,6 +59,8 @@
</span><span class="cx"> #import &lt;WebCore/ScrollingConstraints.h&gt;
</span><span class="cx"> #import &lt;WebCore/WAKWindow.h&gt;
</span><span class="cx"> #import &lt;WebCore/WebCoreThreadMessage.h&gt;
</span><ins>+#import &lt;wtf/HashMap.h&gt;
+#import &lt;wtf/RefPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> NSString * const WebOpenPanelConfigurationAllowMultipleFilesKey = @&quot;WebOpenPanelConfigurationAllowMultipleFilesKey&quot;;
</span><span class="cx"> NSString * const WebOpenPanelConfigurationMediaCaptureTypeKey = @&quot;WebOpenPanelConfigurationMediaCaptureTypeKey&quot;;
</span><span class="lines">@@ -69,9 +69,10 @@
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_CAPTURE)
</span><del>-static WebMediaCaptureType webMediaCaptureType(MediaCaptureType mediaCaptureType)
</del><ins>+
+static WebMediaCaptureType webMediaCaptureType(MediaCaptureType type)
</ins><span class="cx"> {
</span><del>-    switch (mediaCaptureType) {
</del><ins>+    switch (type) {
</ins><span class="cx">     case MediaCaptureTypeNone:
</span><span class="cx">         return WebMediaCaptureTypeNone;
</span><span class="cx">     case MediaCaptureTypeUser:
</span><span class="lines">@@ -83,6 +84,7 @@
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx">     return WebMediaCaptureTypeNone;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClientIOS::setWindowRect(const WebCore::FloatRect&amp; r)
</span><span class="lines">@@ -124,18 +126,15 @@
</span><span class="cx">     return !result.isNull();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebChromeClientIOS::runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt; chooser)
</del><ins>+void WebChromeClientIOS::runOpenPanel(Frame&amp;, FileChooser&amp; chooser)
</ins><span class="cx"> {
</span><del>-    const FileChooserSettings&amp; settings = chooser-&gt;settings();
</del><ins>+    auto&amp; settings = chooser.settings();
</ins><span class="cx">     BOOL allowMultipleFiles = settings.allowsMultipleFiles;
</span><del>-    Vector&lt;String&gt; acceptMIMETypes = settings.acceptMIMETypes;
</del><span class="cx">     WebOpenPanelResultListener *listener = [[WebOpenPanelResultListener alloc] initWithChooser:chooser];
</span><span class="cx"> 
</span><del>-    // Convert the accept attribute string into a list of MIME types.
-    size_t numMIMETypes = acceptMIMETypes.size();
-    NSMutableArray *mimeTypes = [NSMutableArray arrayWithCapacity:numMIMETypes];
-    for (size_t i = 0; i &lt; numMIMETypes; ++i)
-        [mimeTypes addObject:acceptMIMETypes[i]];
</del><ins>+    NSMutableArray *mimeTypes = [NSMutableArray arrayWithCapacity:settings.acceptMIMETypes.size()];
+    for (auto&amp; type : settings.acceptMIMETypes)
+        [mimeTypes addObject:type];
</ins><span class="cx"> 
</span><span class="cx">     WebMediaCaptureType captureType = WebMediaCaptureTypeNone;
</span><span class="cx"> #if ENABLE(MEDIA_CAPTURE)
</span><span class="lines">@@ -158,10 +157,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(IOS_TOUCH_EVENTS)
</span><ins>+
</ins><span class="cx"> void WebChromeClientIOS::didPreventDefaultForEvent()
</span><span class="cx"> {
</span><span class="cx">     [[webView() _UIKitDelegateForwarder] webViewDidPreventDefaultForEvent:webView()];
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClientIOS::didReceiveMobileDocType(bool isMobileDoctype)
</span><span class="lines">@@ -355,10 +356,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ORIENTATION_EVENTS)
</span><ins>+
</ins><span class="cx"> int WebChromeClientIOS::deviceOrientation() const
</span><span class="cx"> {
</span><span class="cx">     return [[webView() _UIKitDelegateForwarder] deviceOrientation];
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #endif // PLATFORM(IOS)
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/ChangeLog        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,3 +1,90 @@
</span><ins>+2017-01-15  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove PassRefPtr from &quot;loader&quot; directory of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=167055
+
+        Reviewed by Alex Christensen.
+
+        * WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.
+        Also made class final and most functions private and final.
+        * WebCoreSupport/WebChromeClient.mm:
+        (WebChromeClient::runOpenPanel): Updated to take references.
+
+        * WebCoreSupport/WebEditorClient.h: Updated for changes to EditorClient.
+        * WebCoreSupport/WebEditorClient.mm:
+        (-[WebUndoStep initWithUndoStep:]): Take reference instead of PassRefPtr.
+        (+[WebUndoStep stepWithUndoStep:]): Ditto.
+        (-[WebUndoStep step]): Return reference instead of pointer.
+        (-[WebEditorUndoTarget undoEditing:]): Updated for the above.
+        (-[WebEditorUndoTarget redoEditing:]): Ditto.
+        (WebEditorClient::registerUndoOrRedoStep): Take reference instead of
+        PassRefPtr.
+        (WebEditorClient::registerUndoStep): Ditto.
+        (WebEditorClient::registerRedoStep): Ditto.
+
+        * WebCoreSupport/WebFrameLoaderClient.h: Updated for changes to
+        FrameLoaderClient, marked functions final instead of override.
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Take
+        pointer instead of PassRefPtr.
+        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
+        (makeFormFieldValuesDictionary): Take a reference.
+        (WebFrameLoaderClient::dispatchWillSendSubmitEvent): Take Ref&amp;&amp; instead
+        of PassRefPtr.
+        (WebFrameLoaderClient::dispatchWillSubmitForm): Take a reference instead
+        of PassRefPtr.
+        (WebFrameLoaderClient::actionDictionary): Take a pointer instead of PassRePtr.
+        (WebFrameLoaderClient::createFrame): Take a reference instead of a pointer.
+        (WebFrameLoaderClient::createPlugin): Ditto.
+        (WebFrameLoaderClient::createJavaAppletWidget): Ditto.
+        (WebFrameLoaderClient::createNetworkingContext): Ditto.
+        (WebFrameLoaderClient::didCreateQuickLookHandle): Pass a reference.
+
+        * WebCoreSupport/WebFrameNetworkingContext.h: Use Ref instead of PassRefPtr.
+        * WebCoreSupport/WebFrameNetworkingContext.mm: Tweak style a bit.
+
+        * WebCoreSupport/WebOpenPanelResultListener.h: Take a reference instead of
+        PassRefPtr. Use RefPtr for class field.
+        * WebCoreSupport/WebOpenPanelResultListener.mm:
+        (-[WebOpenPanelResultListener dealloc]): Deleted. Compiler will now do it
+        correctly without us declaring anything explicitly.
+        (-[WebOpenPanelResultListener cancel]): Get rid of hand-written deref code,
+        and let RefPtr do the work.
+        (-[WebOpenPanelResultListener chooseFilename:]): Ditto.
+        (-[WebOpenPanelResultListener chooseFilenames:]): Ditto.
+        (-[WebOpenPanelResultListener chooseFilenames:displayString:iconImage:]):
+        Rewrote to use a modern Objective-C for loop, reserveInitialCapacity,
+        and uncheckedAppend.
+
+        * WebView/WebArchive.mm:
+        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
+        Updated for changes to LegacyWebArchive.
+        (-[WebArchive mainResource]): Ditto.
+        (-[WebArchive subresources]): Ditto.
+        (-[WebArchive subframeArchives]): Ditto.
+
+        * WebView/WebDataSource.mm:
+        (-[WebDataSource _addSubframeArchives:]): Use a modern Objective-C for loop
+        instead of NSEnumerator.
+        (-[WebDataSource _fileWrapperForURL:]): Use auto.
+        (-[WebDataSource _documentFragmentWithArchive:]): Pass a reference.
+        (-[WebDataSource mainResource]): Ditto.
+        (-[WebDataSource subresources]): Ditto.
+        (-[WebDataSource subresourceForURL:]): Ditto.
+        (-[WebDataSource addSubresource:]): Ditto.
+
+        * WebView/WebResource.mm:
+        (-[WebResourcePrivate initWithCoreResource:]): Take Ref&amp;&amp; instead of PassRefPtr.
+        (-[WebResourcePrivate dealloc]): Remove explicit deref since RefPtr will now take
+        care of it
+        (-[WebResource initWithCoder:]): Pass a reference.
+        (-[WebResource encodeWithCoder:]): Updated since coreResource is now RefPtr.
+        (-[WebResource _initWithCoreResource:]): Take Ref&amp;&amp; instead of PassRefPtr.
+        (-[WebResource _coreResource]): Return reference rather than pointer.
+        (-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):
+        Added code to handle the null case and pass a reference rather than a pointer.
+        * WebView/WebResourceInternal.h: Updated for the above.
+
</ins><span class="cx"> 2017-01-17  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r210834
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -33,130 +33,138 @@
</span><span class="cx"> 
</span><span class="cx"> @class WebView;
</span><span class="cx"> 
</span><ins>+// FIXME: This class is used as a concrete class on Mac, but on iOS this is an abstract
+// base class of the concrete class, WebChromeClientIOS. Because of that, this class and
+// many of its functions are not marked final. That is messy way to organize things.
</ins><span class="cx"> class WebChromeClient : public WebCore::ChromeClient {
</span><span class="cx"> public:
</span><span class="cx">     WebChromeClient(WebView*);
</span><del>-    
-    void chromeDestroyed() override;
-    
</del><ins>+
+    WebView* webView() const { return m_webView; }
+
+private:
+    void chromeDestroyed() final;
+
</ins><span class="cx">     void setWindowRect(const WebCore::FloatRect&amp;) override;
</span><span class="cx">     WebCore::FloatRect windowRect() override;
</span><span class="cx"> 
</span><del>-    WebCore::FloatRect pageRect() override;
</del><ins>+    WebCore::FloatRect pageRect() final;
</ins><span class="cx"> 
</span><span class="cx">     void focus() override;
</span><del>-    void unfocus() override;
-    
-    bool canTakeFocus(WebCore::FocusDirection) override;
</del><ins>+    void unfocus() final;
+
+    bool canTakeFocus(WebCore::FocusDirection) final;
</ins><span class="cx">     void takeFocus(WebCore::FocusDirection) override;
</span><span class="cx"> 
</span><span class="cx">     void focusedElementChanged(WebCore::Element*) override;
</span><del>-    void focusedFrameChanged(WebCore::Frame*) override;
</del><ins>+    void focusedFrameChanged(WebCore::Frame*) final;
</ins><span class="cx"> 
</span><del>-    WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&amp;, const WebCore::WindowFeatures&amp;, const WebCore::NavigationAction&amp;) override;
-    void show() override;
</del><ins>+    WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&amp;, const WebCore::WindowFeatures&amp;, const WebCore::NavigationAction&amp;) final;
+    void show() final;
</ins><span class="cx"> 
</span><del>-    bool canRunModal() override;
-    void runModal() override;
</del><ins>+    bool canRunModal() final;
+    void runModal() final;
</ins><span class="cx"> 
</span><del>-    void setToolbarsVisible(bool) override;
-    bool toolbarsVisible() override;
-    
-    void setStatusbarVisible(bool) override;
-    bool statusbarVisible() override;
-    
-    void setScrollbarsVisible(bool) override;
-    bool scrollbarsVisible() override;
-    
-    void setMenubarVisible(bool) override;
-    bool menubarVisible() override;
-    
-    void setResizable(bool) override;
-    
-    void addMessageToConsole(JSC::MessageSource, JSC::MessageLevel, const WTF::String&amp; message, unsigned lineNumber, unsigned columnNumber, const WTF::String&amp; sourceURL) override;
</del><ins>+    void setToolbarsVisible(bool) final;
+    bool toolbarsVisible() final;
</ins><span class="cx"> 
</span><del>-    bool canRunBeforeUnloadConfirmPanel() override;
-    bool runBeforeUnloadConfirmPanel(const WTF::String&amp; message, WebCore::Frame*) override;
</del><ins>+    void setStatusbarVisible(bool) final;
+    bool statusbarVisible() final;
</ins><span class="cx"> 
</span><del>-    void closeWindowSoon() override;
</del><ins>+    void setScrollbarsVisible(bool) final;
+    bool scrollbarsVisible() final;
</ins><span class="cx"> 
</span><ins>+    void setMenubarVisible(bool) final;
+    bool menubarVisible() final;
+
+    void setResizable(bool) final;
+
+    void addMessageToConsole(JSC::MessageSource, JSC::MessageLevel, const WTF::String&amp; message, unsigned lineNumber, unsigned columnNumber, const WTF::String&amp; sourceURL) final;
+
+    bool canRunBeforeUnloadConfirmPanel() final;
+    bool runBeforeUnloadConfirmPanel(const WTF::String&amp; message, WebCore::Frame*) final;
+
+    void closeWindowSoon() final;
+
</ins><span class="cx">     void runJavaScriptAlert(WebCore::Frame*, const WTF::String&amp;) override;
</span><span class="cx">     bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&amp;) override;
</span><span class="cx">     bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String&amp; message, const WTF::String&amp; defaultValue, WTF::String&amp; result) override;
</span><span class="cx"> 
</span><del>-    bool supportsImmediateInvalidation() override;
-    void invalidateRootView(const WebCore::IntRect&amp;) override;
-    void invalidateContentsAndRootView(const WebCore::IntRect&amp;) override;
-    void invalidateContentsForSlowScroll(const WebCore::IntRect&amp;) override;
-    void scroll(const WebCore::IntSize&amp; scrollDelta, const WebCore::IntRect&amp; rectToScroll, const WebCore::IntRect&amp; clipRect) override;
</del><ins>+    bool supportsImmediateInvalidation() final;
+    void invalidateRootView(const WebCore::IntRect&amp;) final;
+    void invalidateContentsAndRootView(const WebCore::IntRect&amp;) final;
+    void invalidateContentsForSlowScroll(const WebCore::IntRect&amp;) final;
+    void scroll(const WebCore::IntSize&amp; scrollDelta, const WebCore::IntRect&amp; rectToScroll, const WebCore::IntRect&amp; clipRect) final;
</ins><span class="cx"> 
</span><del>-    WebCore::IntPoint screenToRootView(const WebCore::IntPoint&amp;) const override;
-    WebCore::IntRect rootViewToScreen(const WebCore::IntRect&amp;) const override;
</del><ins>+    WebCore::IntPoint screenToRootView(const WebCore::IntPoint&amp;) const final;
+    WebCore::IntRect rootViewToScreen(const WebCore::IntRect&amp;) const final;
+
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    WebCore::IntPoint accessibilityScreenToRootView(const WebCore::IntPoint&amp;) const override;
-    WebCore::IntRect rootViewToAccessibilityScreen(const WebCore::IntRect&amp;) const override;
</del><ins>+    WebCore::IntPoint accessibilityScreenToRootView(const WebCore::IntPoint&amp;) const final;
+    WebCore::IntRect rootViewToAccessibilityScreen(const WebCore::IntRect&amp;) const final;
</ins><span class="cx"> #endif
</span><del>-    PlatformPageClient platformPageClient() const override;
-    void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&amp;) const override;
-    void scrollRectIntoView(const WebCore::IntRect&amp;) const override;
-    
</del><ins>+
+    PlatformPageClient platformPageClient() const final;
+    void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&amp;) const final;
+    void scrollRectIntoView(const WebCore::IntRect&amp;) const final;
+
</ins><span class="cx">     void setStatusbarText(const WTF::String&amp;) override;
</span><span class="cx"> 
</span><del>-    void scrollbarsModeDidChange() const override { }
-    bool shouldUnavailablePluginMessageBeButton(WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
-    void unavailablePluginButtonClicked(WebCore::Element*, WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
-    void mouseDidMoveOverElement(const WebCore::HitTestResult&amp;, unsigned modifierFlags) override;
</del><ins>+    void scrollbarsModeDidChange() const final { }
+    bool shouldUnavailablePluginMessageBeButton(WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const final;
+    void unavailablePluginButtonClicked(WebCore::Element*, WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const final;
+    void mouseDidMoveOverElement(const WebCore::HitTestResult&amp;, unsigned modifierFlags) final;
</ins><span class="cx"> 
</span><del>-    void setToolTip(const WTF::String&amp;, WebCore::TextDirection) override;
</del><ins>+    void setToolTip(const WTF::String&amp;, WebCore::TextDirection) final;
</ins><span class="cx"> 
</span><del>-    void print(WebCore::Frame*) override;
-    void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&amp; databaseName, WebCore::DatabaseDetails) override;
-    void reachedMaxAppCacheSize(int64_t spaceNeeded) override;
-    void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t totalSpaceNeeded) override;
</del><ins>+    void print(WebCore::Frame*) final;
+    void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&amp; databaseName, WebCore::DatabaseDetails) final;
+    void reachedMaxAppCacheSize(int64_t spaceNeeded) final;
+    void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t totalSpaceNeeded) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><del>-    void annotatedRegionsChanged() override;
</del><ins>+    void annotatedRegionsChanged() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void runOpenPanel(WebCore::Frame*, PassRefPtr&lt;WebCore::FileChooser&gt;) override;
-    void loadIconForFiles(const Vector&lt;WTF::String&gt;&amp;, WebCore::FileIconLoader&amp;) override;
</del><ins>+    void runOpenPanel(WebCore::Frame&amp;, WebCore::FileChooser&amp;) override;
+    void loadIconForFiles(const Vector&lt;WTF::String&gt;&amp;, WebCore::FileIconLoader&amp;) final;
</ins><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    void setCursor(const WebCore::Cursor&amp;) override;
-    void setCursorHiddenUntilMouseMoves(bool) override;
</del><ins>+    void setCursor(const WebCore::Cursor&amp;) final;
+    void setCursorHiddenUntilMouseMoves(bool) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><del>-    std::unique_ptr&lt;WebCore::ColorChooser&gt; createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&amp;) override;
</del><ins>+    std::unique_ptr&lt;WebCore::ColorChooser&gt; createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&amp;) final;
</ins><span class="cx"> #endif
</span><del>-    
</del><ins>+
</ins><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><del>-    bool requestPointerLock() override;
-    void requestPointerUnlock() override;
</del><ins>+    bool requestPointerLock() final;
+    void requestPointerUnlock() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    WebCore::KeyboardUIMode keyboardUIMode() override;
</del><ins>+    WebCore::KeyboardUIMode keyboardUIMode() final;
</ins><span class="cx"> 
</span><del>-    NSResponder *firstResponder() override;
-    void makeFirstResponder(NSResponder *) override;
</del><ins>+    NSResponder *firstResponder() final;
+    void makeFirstResponder(NSResponder *) final;
</ins><span class="cx"> 
</span><del>-    void enableSuddenTermination() override;
-    void disableSuddenTermination() override;
-    
-    bool shouldReplaceWithGeneratedFileForUpload(const WTF::String&amp; path, WTF::String &amp;generatedFilename) override;
-    WTF::String generateReplacementFile(const WTF::String&amp; path) override;
</del><ins>+    void enableSuddenTermination() final;
+    void disableSuddenTermination() final;
</ins><span class="cx"> 
</span><ins>+    bool shouldReplaceWithGeneratedFileForUpload(const WTF::String&amp; path, WTF::String &amp;generatedFilename) final;
+    WTF::String generateReplacementFile(const WTF::String&amp; path) final;
+
</ins><span class="cx">     void elementDidFocus(const WebCore::Node*) override;
</span><span class="cx">     void elementDidBlur(const WebCore::Node*) override;
</span><span class="cx"> 
</span><del>-    bool shouldPaintEntireContents() const override;
</del><ins>+    bool shouldPaintEntireContents() const final;
</ins><span class="cx"> 
</span><span class="cx">     void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
</span><del>-    void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
-    void setNeedsOneShotDrawingSynchronization() override;
-    void scheduleCompositingLayerFlush() override;
</del><ins>+    void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) final;
+    void setNeedsOneShotDrawingSynchronization() final;
+    void scheduleCompositingLayerFlush() final;
</ins><span class="cx"> 
</span><del>-    CompositingTriggerFlags allowedCompositingTriggers() const override
</del><ins>+    CompositingTriggerFlags allowedCompositingTriggers() const final
</ins><span class="cx">     {
</span><span class="cx">         return static_cast&lt;CompositingTriggerFlags&gt;(
</span><span class="cx">             ThreeDTransformTrigger |
</span><span class="lines">@@ -169,52 +177,49 @@
</span><span class="cx">             AnimationTrigger);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(VIDEO) &amp;&amp; PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
+    void setUpPlaybackControlsManager(WebCore::HTMLMediaElement&amp;) final;
+    void clearPlaybackControlsManager() final;
+#endif
+
</ins><span class="cx"> #if ENABLE(VIDEO)
</span><del>-#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
-    void setUpPlaybackControlsManager(WebCore::HTMLMediaElement&amp;) override;
-    void clearPlaybackControlsManager() override;
</del><ins>+    bool supportsVideoFullscreen(WebCore::HTMLMediaElementEnums::VideoFullscreenMode) final;
+    void enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) final;
+    void exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool supportsVideoFullscreen(WebCore::HTMLMediaElementEnums::VideoFullscreenMode) override;
-    void enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) override;
-    void exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;) override;
-#endif
-    
</del><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) override;
-    void enterFullScreenForElement(WebCore::Element*) override;
-    void exitFullScreenForElement(WebCore::Element*) override;
</del><ins>+    bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) final;
+    void enterFullScreenForElement(WebCore::Element*) final;
+    void exitFullScreenForElement(WebCore::Element*) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool selectItemWritingDirectionIsNatural() override;
</span><span class="cx">     bool selectItemAlignmentFollowsMenuWritingDirection() override;
</span><del>-    bool hasOpenedPopup() const override;
</del><ins>+    bool hasOpenedPopup() const final;
</ins><span class="cx">     RefPtr&lt;WebCore::PopupMenu&gt; createPopupMenu(WebCore::PopupMenuClient*) const override;
</span><span class="cx">     RefPtr&lt;WebCore::SearchPopupMenu&gt; createSearchPopupMenu(WebCore::PopupMenuClient*) const override;
</span><span class="cx"> 
</span><del>-    void wheelEventHandlersChanged(bool) override { }
</del><ins>+    void wheelEventHandlersChanged(bool) final { }
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><del>-    bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const override;
-    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const override;
</del><ins>+    bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const final;
+    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SERVICE_CONTROLS)
</span><del>-    void handleSelectionServiceClick(WebCore::FrameSelection&amp;, const Vector&lt;String&gt;&amp; telephoneNumbers, const WebCore::IntPoint&amp;) override;
-    bool hasRelevantSelectionServices(bool isTextOnly) const override;
</del><ins>+    void handleSelectionServiceClick(WebCore::FrameSelection&amp;, const Vector&lt;String&gt;&amp; telephoneNumbers, const WebCore::IntPoint&amp;) final;
+    bool hasRelevantSelectionServices(bool isTextOnly) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    WebView* webView() const { return m_webView; }
-
</del><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    void addPlaybackTargetPickerClient(uint64_t /*contextId*/) override;
-    void removePlaybackTargetPickerClient(uint64_t /*contextId*/) override;
-    void showPlaybackTargetPicker(uint64_t /*contextId*/, const WebCore::IntPoint&amp;, bool /* hasVideo */) override;
-    void playbackTargetPickerClientStateDidChange(uint64_t /*contextId*/, WebCore::MediaProducer::MediaStateFlags) override;
-    void setMockMediaPlaybackTargetPickerEnabled(bool) override;
-    void setMockMediaPlaybackTargetPickerState(const String&amp;, WebCore::MediaPlaybackTargetContext::State) override;
</del><ins>+    void addPlaybackTargetPickerClient(uint64_t /*contextId*/) final;
+    void removePlaybackTargetPickerClient(uint64_t /*contextId*/) final;
+    void showPlaybackTargetPicker(uint64_t /*contextId*/, const WebCore::IntPoint&amp;, bool /* hasVideo */) final;
+    void playbackTargetPickerClientStateDidChange(uint64_t /*contextId*/, WebCore::MediaProducer::MediaStateFlags) final;
+    void setMockMediaPlaybackTargetPickerEnabled(bool) final;
+    void setMockMediaPlaybackTargetPickerState(const String&amp;, WebCore::MediaPlaybackTargetContext::State) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-private:
</del><span class="cx">     WebView *m_webView;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebChromeClientmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -741,10 +741,10 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void WebChromeClient::runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt; chooser)
</del><ins>+void WebChromeClient::runOpenPanel(Frame&amp;, FileChooser&amp; chooser)
</ins><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><del>-    BOOL allowMultipleFiles = chooser-&gt;settings().allowsMultipleFiles;
</del><ins>+    BOOL allowMultipleFiles = chooser.settings().allowsMultipleFiles;
</ins><span class="cx">     WebOpenPanelResultListener *listener = [[WebOpenPanelResultListener alloc] initWithChooser:chooser];
</span><span class="cx">     id delegate = [m_webView UIDelegate];
</span><span class="cx">     if ([delegate respondsToSelector:@selector(webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:)])
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebEditorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -115,8 +115,8 @@
</span><span class="cx">     void discardedComposition(WebCore::Frame*) final;
</span><span class="cx">     void canceledComposition() final;
</span><span class="cx"> 
</span><del>-    void registerUndoStep(PassRefPtr&lt;WebCore::UndoStep&gt;) final;
-    void registerRedoStep(PassRefPtr&lt;WebCore::UndoStep&gt;) final;
</del><ins>+    void registerUndoStep(WebCore::UndoStep&amp;) final;
+    void registerRedoStep(WebCore::UndoStep&amp;) final;
</ins><span class="cx">     void clearUndoRedoOperations() final;
</span><span class="cx"> 
</span><span class="cx">     bool canCopyCut(WebCore::Frame*, bool defaultValue) const final;
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx">     void handleAcceptedCandidateWithSoftSpaces(WebCore::TextCheckingResult) final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void registerUndoOrRedoStep(PassRefPtr&lt;WebCore::UndoStep&gt;, bool isRedo);
</del><ins>+    void registerUndoOrRedoStep(WebCore::UndoStep&amp;, bool isRedo);
</ins><span class="cx"> 
</span><span class="cx">     WebView *m_webView;
</span><span class="cx">     RetainPtr&lt;WebEditorUndoTarget&gt; m_undoTarget;
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebEditorClientmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -119,8 +119,8 @@
</span><span class="cx">     RefPtr&lt;UndoStep&gt; m_step;   
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-+ (WebUndoStep *)stepWithUndoStep:(PassRefPtr&lt;UndoStep&gt;)step;
-- (UndoStep *)step;
</del><ins>++ (WebUndoStep *)stepWithUndoStep:(UndoStep&amp;)step;
+- (UndoStep&amp;)step;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><span class="lines">@@ -135,13 +135,12 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithUndoStep:(PassRefPtr&lt;UndoStep&gt;)step
</del><ins>+- (id)initWithUndoStep:(UndoStep&amp;)step
</ins><span class="cx"> {
</span><del>-    ASSERT(step);
</del><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="cx">         return nil;
</span><del>-    m_step = step;
</del><ins>+    m_step = &amp;step;
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -153,14 +152,14 @@
</span><span class="cx">     [super dealloc];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-+ (WebUndoStep *)stepWithUndoStep:(PassRefPtr&lt;UndoStep&gt;)step
</del><ins>++ (WebUndoStep *)stepWithUndoStep:(UndoStep&amp;)step
</ins><span class="cx"> {
</span><span class="cx">     return [[[WebUndoStep alloc] initWithUndoStep:step] autorelease];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (UndoStep *)step
</del><ins>+- (UndoStep&amp;)step
</ins><span class="cx"> {
</span><del>-    return m_step.get();
</del><ins>+    return *m_step;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -177,13 +176,13 @@
</span><span class="cx"> - (void)undoEditing:(id)arg
</span><span class="cx"> {
</span><span class="cx">     ASSERT([arg isKindOfClass:[WebUndoStep class]]);
</span><del>-    [arg step]-&gt;unapply();
</del><ins>+    [arg step].unapply();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)redoEditing:(id)arg
</span><span class="cx"> {
</span><span class="cx">     ASSERT([arg isKindOfClass:[WebUndoStep class]]);
</span><del>-    [arg step]-&gt;reapply();
</del><ins>+    [arg step].reapply();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -642,10 +641,8 @@
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerUndoOrRedoStep(PassRefPtr&lt;UndoStep&gt; step, bool isRedo)
</del><ins>+void WebEditorClient::registerUndoOrRedoStep(UndoStep&amp; step, bool isRedo)
</ins><span class="cx"> {
</span><del>-    ASSERT(step);
-    
</del><span class="cx">     NSUndoManager *undoManager = [m_webView undoManager];
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="lines">@@ -656,7 +653,7 @@
</span><span class="cx">         return;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    NSString *actionName = undoNameForEditAction(step-&gt;editingAction());
</del><ins>+    NSString *actionName = undoNameForEditAction(step.editingAction());
</ins><span class="cx">     WebUndoStep *webEntry = [WebUndoStep stepWithUndoStep:step];
</span><span class="cx">     [undoManager registerUndoWithTarget:m_undoTarget.get() selector:(isRedo ? @selector(redoEditing:) : @selector(undoEditing:)) object:webEntry];
</span><span class="cx">     if (actionName)
</span><span class="lines">@@ -684,12 +681,12 @@
</span><span class="cx">         [m_webView updateTouchBar];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerUndoStep(PassRefPtr&lt;UndoStep&gt; cmd)
</del><ins>+void WebEditorClient::registerUndoStep(UndoStep&amp; cmd)
</ins><span class="cx"> {
</span><span class="cx">     registerUndoOrRedoStep(cmd, false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerRedoStep(PassRefPtr&lt;UndoStep&gt; cmd)
</del><ins>+void WebEditorClient::registerRedoStep(UndoStep&amp; cmd)
</ins><span class="cx"> {
</span><span class="cx">     registerUndoOrRedoStep(cmd, true);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -58,202 +58,202 @@
</span><span class="cx">     WebFrame* webFrame() const { return m_webFrame.get(); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void frameLoaderDestroyed() override;
-    bool hasWebView() const override; // mainly for assertions
</del><ins>+    void frameLoaderDestroyed() final;
+    bool hasWebView() const final; // mainly for assertions
</ins><span class="cx"> 
</span><del>-    void makeRepresentation(WebCore::DocumentLoader*) override;
-    bool hasHTMLView() const override;
</del><ins>+    void makeRepresentation(WebCore::DocumentLoader*) final;
+    bool hasHTMLView() const final;
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    bool forceLayoutOnRestoreFromPageCache() override;
</del><ins>+    bool forceLayoutOnRestoreFromPageCache() final;
</ins><span class="cx"> #endif
</span><del>-    void forceLayoutForNonHTML() override;
</del><ins>+    void forceLayoutForNonHTML() final;
</ins><span class="cx"> 
</span><del>-    void setCopiesOnScroll() override;
</del><ins>+    void setCopiesOnScroll() final;
</ins><span class="cx"> 
</span><del>-    void detachedFromParent2() override;
-    void detachedFromParent3() override;
</del><ins>+    void detachedFromParent2() final;
+    void detachedFromParent3() final;
</ins><span class="cx"> 
</span><del>-    void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;) override;
</del><ins>+    void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;) final;
</ins><span class="cx"> 
</span><del>-    void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;) override;
</del><ins>+    void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx"> 
</span><del>-    void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse) override;
-    bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
-    void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&amp;) override;
</del><ins>+    void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse) final;
+    bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) final;
+    void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&amp;) final;
</ins><span class="cx"> #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</span><del>-    bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&amp;) override;
</del><ins>+    bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    RetainPtr&lt;CFDictionaryRef&gt; connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) override;
</del><ins>+    RetainPtr&lt;CFDictionaryRef&gt; connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;) override;
-    void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
-    void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
</del><ins>+    void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;) final;
+    void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) final;
+    void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) final;
</ins><span class="cx"> #if ENABLE(DATA_DETECTION)
</span><del>-    void dispatchDidFinishDataDetection(NSArray *detectionResults) override;
</del><ins>+    void dispatchDidFinishDataDetection(NSArray *detectionResults) final;
</ins><span class="cx"> #endif
</span><del>-    void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&amp;) override;
</del><ins>+    void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&amp;) final;
</ins><span class="cx"> 
</span><del>-    NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const override;
</del><ins>+    NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const final;
</ins><span class="cx"> 
</span><del>-    void dispatchDidDispatchOnloadEvents() override;
-    void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
-    void dispatchDidCancelClientRedirect() override;
-    void dispatchWillPerformClientRedirect(const WebCore::URL&amp;, double interval, double fireDate) override;
-    void dispatchDidChangeLocationWithinPage() override;
-    void dispatchDidPushStateWithinPage() override;
-    void dispatchDidReplaceStateWithinPage() override;
-    void dispatchDidPopStateWithinPage() override;
</del><ins>+    void dispatchDidDispatchOnloadEvents() final;
+    void dispatchDidReceiveServerRedirectForProvisionalLoad() final;
+    void dispatchDidCancelClientRedirect() final;
+    void dispatchWillPerformClientRedirect(const WebCore::URL&amp;, double interval, double fireDate) final;
+    void dispatchDidChangeLocationWithinPage() final;
+    void dispatchDidPushStateWithinPage() final;
+    void dispatchDidReplaceStateWithinPage() final;
+    void dispatchDidPopStateWithinPage() final;
</ins><span class="cx">     
</span><del>-    void dispatchWillClose() override;
-    void dispatchDidReceiveIcon() override;
-    void dispatchDidStartProvisionalLoad() override;
-    void dispatchDidReceiveTitle(const WebCore::StringWithDirection&amp;) override;
-    void dispatchDidCommitLoad(std::optional&lt;WebCore::HasInsecureContent&gt;) override;
-    void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&amp;) override;
-    void dispatchDidFailLoad(const WebCore::ResourceError&amp;) override;
-    void dispatchDidFinishDocumentLoad() override;
-    void dispatchDidFinishLoad() override;
-    void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) override;
</del><ins>+    void dispatchWillClose() final;
+    void dispatchDidReceiveIcon() final;
+    void dispatchDidStartProvisionalLoad() final;
+    void dispatchDidReceiveTitle(const WebCore::StringWithDirection&amp;) final;
+    void dispatchDidCommitLoad(std::optional&lt;WebCore::HasInsecureContent&gt;) final;
+    void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&amp;) final;
+    void dispatchDidFailLoad(const WebCore::ResourceError&amp;) final;
+    void dispatchDidFinishDocumentLoad() final;
+    void dispatchDidFinishLoad() final;
+    void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) final;
</ins><span class="cx"> 
</span><del>-    WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) override;
-    void dispatchShow() override;
</del><ins>+    WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) final;
+    void dispatchShow() final;
</ins><span class="cx"> 
</span><del>-    void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, WebCore::FramePolicyFunction) override;
-    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, const WTF::String&amp; frameName, WebCore::FramePolicyFunction) override;
-    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
-    void cancelPolicyCheck() override;
</del><ins>+    void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, WebCore::FramePolicyFunction) final;
+    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, const WTF::String&amp; frameName, WebCore::FramePolicyFunction) final;
+    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, WebCore::FramePolicyFunction) final;
+    void cancelPolicyCheck() final;
</ins><span class="cx"> 
</span><del>-    void dispatchUnableToImplementPolicy(const WebCore::ResourceError&amp;) override;
</del><ins>+    void dispatchUnableToImplementPolicy(const WebCore::ResourceError&amp;) final;
</ins><span class="cx"> 
</span><del>-    void dispatchWillSendSubmitEvent(PassRefPtr&lt;WebCore::FormState&gt;) override;
-    void dispatchWillSubmitForm(PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
</del><ins>+    void dispatchWillSendSubmitEvent(Ref&lt;WebCore::FormState&gt;&amp;&amp;) final;
+    void dispatchWillSubmitForm(WebCore::FormState&amp;, WebCore::FramePolicyFunction) final;
</ins><span class="cx"> 
</span><del>-    void revertToProvisionalState(WebCore::DocumentLoader*) override;
-    void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&amp;) override;
-    bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;, int length) override;
</del><ins>+    void revertToProvisionalState(WebCore::DocumentLoader*) final;
+    void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&amp;) final;
+    bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;, int length) final;
</ins><span class="cx"> 
</span><del>-    void setMainFrameDocumentReady(bool) override;
</del><ins>+    void setMainFrameDocumentReady(bool) final;
</ins><span class="cx"> 
</span><del>-    void startDownload(const WebCore::ResourceRequest&amp;, const String&amp; suggestedName = String()) override;
</del><ins>+    void startDownload(const WebCore::ResourceRequest&amp;, const String&amp; suggestedName = String()) final;
</ins><span class="cx"> 
</span><del>-    void willChangeTitle(WebCore::DocumentLoader*) override;
-    void didChangeTitle(WebCore::DocumentLoader*) override;
</del><ins>+    void willChangeTitle(WebCore::DocumentLoader*) final;
+    void didChangeTitle(WebCore::DocumentLoader*) final;
</ins><span class="cx"> 
</span><del>-    void willReplaceMultipartContent() override { }
-    void didReplaceMultipartContent() override;
</del><ins>+    void willReplaceMultipartContent() final { }
+    void didReplaceMultipartContent() final;
</ins><span class="cx"> 
</span><del>-    void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
-    void finishedLoading(WebCore::DocumentLoader*) override;
-    void updateGlobalHistory() override;
-    void updateGlobalHistoryRedirectLinks() override;
</del><ins>+    void committedLoad(WebCore::DocumentLoader*, const char*, int) final;
+    void finishedLoading(WebCore::DocumentLoader*) final;
+    void updateGlobalHistory() final;
+    void updateGlobalHistoryRedirectLinks() final;
</ins><span class="cx"> 
</span><del>-    bool shouldGoToHistoryItem(WebCore::HistoryItem*) const override;
-    void updateGlobalHistoryItemForPage() override;
</del><ins>+    bool shouldGoToHistoryItem(WebCore::HistoryItem*) const final;
+    void updateGlobalHistoryItemForPage() final;
</ins><span class="cx"> 
</span><del>-    void didDisplayInsecureContent() override;
-    void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&amp;) override;
-    void didDetectXSS(const WebCore::URL&amp;, bool didBlockEntirePage) override;
</del><ins>+    void didDisplayInsecureContent() final;
+    void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&amp;) final;
+    void didDetectXSS(const WebCore::URL&amp;, bool didBlockEntirePage) final;
</ins><span class="cx"> 
</span><del>-    WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError blockedError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&amp;) override;
</del><ins>+    WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError blockedError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx"> #if ENABLE(CONTENT_FILTERING)
</span><del>-    WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&amp;) override;
</del><ins>+    WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&amp;) override;
-    WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&amp;) override;
-    WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&amp;) override;
</del><ins>+    WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&amp;) final;
+    WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&amp;) final;
+    WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&amp;) final;
</ins><span class="cx"> 
</span><del>-    bool shouldFallBack(const WebCore::ResourceError&amp;) override;
</del><ins>+    bool shouldFallBack(const WebCore::ResourceError&amp;) final;
</ins><span class="cx"> 
</span><del>-    WTF::String userAgent(const WebCore::URL&amp;) override;
</del><ins>+    WTF::String userAgent(const WebCore::URL&amp;) final;
</ins><span class="cx">     
</span><del>-    void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
-    void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
</del><ins>+    void savePlatformDataToCachedFrame(WebCore::CachedFrame*) final;
+    void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) final;
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    void didRestoreFrameHierarchyForCachedFrame() override;
</del><ins>+    void didRestoreFrameHierarchyForCachedFrame() final;
</ins><span class="cx"> #endif
</span><del>-    void transitionToCommittedForNewPage() override;
</del><ins>+    void transitionToCommittedForNewPage() final;
</ins><span class="cx"> 
</span><del>-    void didSaveToPageCache() override;
-    void didRestoreFromPageCache() override;
</del><ins>+    void didSaveToPageCache() final;
+    void didRestoreFromPageCache() final;
</ins><span class="cx"> 
</span><del>-    void dispatchDidBecomeFrameset(bool) override;
</del><ins>+    void dispatchDidBecomeFrameset(bool) final;
</ins><span class="cx"> 
</span><del>-    bool canHandleRequest(const WebCore::ResourceRequest&amp;) const override;
-    bool canShowMIMEType(const WTF::String&amp; MIMEType) const override;
-    bool canShowMIMETypeAsHTML(const WTF::String&amp; MIMEType) const override;
-    bool representationExistsForURLScheme(const WTF::String&amp; URLScheme) const override;
-    WTF::String generatedMIMETypeForURLScheme(const WTF::String&amp; URLScheme) const override;
</del><ins>+    bool canHandleRequest(const WebCore::ResourceRequest&amp;) const final;
+    bool canShowMIMEType(const WTF::String&amp; MIMEType) const final;
+    bool canShowMIMETypeAsHTML(const WTF::String&amp; MIMEType) const final;
+    bool representationExistsForURLScheme(const WTF::String&amp; URLScheme) const final;
+    WTF::String generatedMIMETypeForURLScheme(const WTF::String&amp; URLScheme) const final;
</ins><span class="cx"> 
</span><del>-    void frameLoadCompleted() override;
-    void saveViewStateToItem(WebCore::HistoryItem&amp;) override;
-    void restoreViewState() override;
-    void provisionalLoadStarted() override;
-    void didFinishLoad() override;
-    void prepareForDataSourceReplacement() override;
-    Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;) override;
-    void updateCachedDocumentLoader(WebCore::DocumentLoader&amp;) override { }
</del><ins>+    void frameLoadCompleted() final;
+    void saveViewStateToItem(WebCore::HistoryItem&amp;) final;
+    void restoreViewState() final;
+    void provisionalLoadStarted() final;
+    void didFinishLoad() final;
+    void prepareForDataSourceReplacement() final;
+    Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;) final;
+    void updateCachedDocumentLoader(WebCore::DocumentLoader&amp;) final { }
</ins><span class="cx"> 
</span><del>-    void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;) override;
</del><ins>+    void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;) final;
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const WTF::String&amp; name, WebCore::HTMLFrameOwnerElement*,
-        const WTF::String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
-    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement*, const WebCore::URL&amp;, const Vector&lt;WTF::String&gt;&amp;,
-        const Vector&lt;WTF::String&gt;&amp;, const WTF::String&amp;, bool) override;
-    void recreatePlugin(WebCore::Widget*) override;
-    void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
</del><ins>+    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const WTF::String&amp; name, WebCore::HTMLFrameOwnerElement&amp;,
+        const WTF::String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) final;
+    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement&amp;, const WebCore::URL&amp;,
+        const Vector&lt;WTF::String&gt;&amp;, const Vector&lt;WTF::String&gt;&amp;, const WTF::String&amp;, bool) final;
+    void recreatePlugin(WebCore::Widget*) final;
+    void redirectDataToPlugin(WebCore::Widget* pluginWidget) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&amp;) const override;
-    WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&amp;) const override;
-#endif // ENABLE(WEBGL)
</del><ins>+    WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&amp;) const final;
+    WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&amp;) const final;
+#endif
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement*, const WebCore::URL&amp; baseURL,
-        const Vector&lt;WTF::String&gt;&amp; paramNames, const Vector&lt;WTF::String&gt;&amp; paramValues) override;
</del><ins>+    RefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement&amp;, const WebCore::URL&amp; baseURL,
+        const Vector&lt;WTF::String&gt;&amp; paramNames, const Vector&lt;WTF::String&gt;&amp; paramValues) final;
</ins><span class="cx">     
</span><del>-    WebCore::ObjectContentType objectContentType(const WebCore::URL&amp;, const WTF::String&amp; mimeType) override;
-    WTF::String overrideMediaType() const override;
</del><ins>+    WebCore::ObjectContentType objectContentType(const WebCore::URL&amp;, const WTF::String&amp; mimeType) final;
+    WTF::String overrideMediaType() const final;
</ins><span class="cx">     
</span><del>-    void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&amp;) override;
</del><ins>+    void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&amp;) final;
</ins><span class="cx"> 
</span><del>-    void registerForIconNotification(bool listen) override;
</del><ins>+    void registerForIconNotification(bool listen) final;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    bool shouldLoadMediaElementURL(const WebCore::URL&amp;) const override;
</del><ins>+    bool shouldLoadMediaElementURL(const WebCore::URL&amp;) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    RemoteAXObjectRef accessibilityRemoteObject() override { return 0; }
</del><ins>+    RemoteAXObjectRef accessibilityRemoteObject() final { return 0; }
</ins><span class="cx">     
</span><span class="cx">     RetainPtr&lt;WebFramePolicyListener&gt; setUpPolicyListener(WebCore::FramePolicyFunction, NSURL *appLinkURL = nil);
</span><span class="cx"> 
</span><del>-    NSDictionary *actionDictionary(const WebCore::NavigationAction&amp;, PassRefPtr&lt;WebCore::FormState&gt;) const;
</del><ins>+    NSDictionary *actionDictionary(const WebCore::NavigationAction&amp;, WebCore::FormState*) const;
</ins><span class="cx">     
</span><del>-    bool canCachePage() const override;
</del><ins>+    bool canCachePage() const final;
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext() override;
</del><ins>+    Ref&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext() final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(REQUEST_AUTOCOMPLETE)
</span><del>-    void didRequestAutocomplete(PassRefPtr&lt;WebCore::FormState&gt;) override { }
</del><ins>+    void didRequestAutocomplete(Ref&lt;WebCore::FormState&gt;&amp;&amp;) final { }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool shouldPaintBrokenImage(const WebCore::URL&amp;) const override;
</del><ins>+    bool shouldPaintBrokenImage(const WebCore::URL&amp;) const final;
</ins><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><del>-    void didCreateQuickLookHandle(WebCore::QuickLookHandle&amp;) override;
</del><ins>+    void didCreateQuickLookHandle(WebCore::QuickLookHandle&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_FILTERING)
</span><del>-    void contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler) override;
</del><ins>+    void contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void prefetchDNS(const String&amp;) override;
</del><ins>+    void prefetchDNS(const String&amp;) final;
</ins><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;WebFrame&gt; m_webFrame;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameLoaderClientmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> #import &lt;runtime/InitializeThreading.h&gt;
</span><span class="cx"> #import &lt;wtf/BlockObjCExceptions.h&gt;
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><del>-#import &lt;wtf/PassRefPtr.h&gt;
</del><ins>+#import &lt;wtf/Ref.h&gt;
</ins><span class="cx"> #import &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> #import &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -885,7 +885,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, FormState* formState, const String&amp; frameName, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebView *webView = getWebView(m_webFrame.get());
</span><span class="cx">     BOOL tryAppLink = shouldTryAppLink(webView, action, nullptr);
</span><span class="lines">@@ -897,7 +897,7 @@
</span><span class="cx">                           decisionListener:setUpPolicyListener(WTFMove(function), tryAppLink ? (NSURL *)request.url() : nil).get()];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, FormState* formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebView *webView = getWebView(m_webFrame.get());
</span><span class="cx">     BOOL tryAppLink = shouldTryAppLink(webView, action, core(m_webFrame.get()));
</span><span class="lines">@@ -921,29 +921,28 @@
</span><span class="cx">     [[webView _policyDelegateForwarder] webView:webView unableToImplementPolicyWithError:error frame:m_webFrame.get()];    
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static NSDictionary *makeFormFieldValuesDictionary(FormState* formState)
</del><ins>+static NSDictionary *makeFormFieldValuesDictionary(FormState&amp; formState)
</ins><span class="cx"> {
</span><del>-    const StringPairVector&amp; textFieldValues = formState-&gt;textFieldValues();
</del><ins>+    auto&amp; textFieldValues = formState.textFieldValues();
</ins><span class="cx">     size_t size = textFieldValues.size();
</span><span class="cx">     NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithCapacity:size];
</span><del>-    for (size_t i = 0; i &lt; size; ++i)
-        [dictionary setObject:textFieldValues[i].second forKey:textFieldValues[i].first];
-
</del><ins>+    for (auto&amp; value : textFieldValues)
+        [dictionary setObject:value.second forKey:value.first];
</ins><span class="cx">     return [dictionary autorelease];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr&lt;WebCore::FormState&gt; formState)
</del><ins>+void WebFrameLoaderClient::dispatchWillSendSubmitEvent(Ref&lt;WebCore::FormState&gt;&amp;&amp; formState)
</ins><span class="cx"> {
</span><span class="cx">     id &lt;WebFormDelegate&gt; formDelegate = [getWebView(m_webFrame.get()) _formDelegate];
</span><span class="cx">     if (!formDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    DOMHTMLFormElement *formElement = kit(formState-&gt;form());
</del><ins>+    DOMHTMLFormElement *formElement = kit(&amp;formState-&gt;form());
</ins><span class="cx">     NSDictionary *values = makeFormFieldValuesDictionary(formState.get());
</span><span class="cx">     CallFormDelegate(getWebView(m_webFrame.get()), @selector(willSendSubmitEventToForm:inFrame:withValues:), formElement, m_webFrame.get(), values);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt; formState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchWillSubmitForm(FormState&amp; formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     id &lt;WebFormDelegate&gt; formDelegate = [getWebView(m_webFrame.get()) _formDelegate];
</span><span class="cx">     if (!formDelegate) {
</span><span class="lines">@@ -951,8 +950,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    NSDictionary *values = makeFormFieldValuesDictionary(formState.get());
-    CallFormDelegate(getWebView(m_webFrame.get()), @selector(frame:sourceFrame:willSubmitForm:withValues:submissionListener:), m_webFrame.get(), kit(formState-&gt;sourceDocument()-&gt;frame()), kit(formState-&gt;form()), values, setUpPolicyListener(WTFMove(function)).get());
</del><ins>+    NSDictionary *values = makeFormFieldValuesDictionary(formState);
+    CallFormDelegate(getWebView(m_webFrame.get()), @selector(frame:sourceFrame:willSubmitForm:withValues:submissionListener:), m_webFrame.get(), kit(formState.sourceDocument().frame()), kit(&amp;formState.form()), values, setUpPolicyListener(WTFMove(function)).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebFrameLoaderClient::revertToProvisionalState(DocumentLoader* loader)
</span><span class="lines">@@ -1553,7 +1552,7 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-NSDictionary *WebFrameLoaderClient::actionDictionary(const NavigationAction&amp; action, PassRefPtr&lt;FormState&gt; formState) const
</del><ins>+NSDictionary *WebFrameLoaderClient::actionDictionary(const NavigationAction&amp; action, FormState* formState) const
</ins><span class="cx"> {
</span><span class="cx">     unsigned modifierFlags = 0;
</span><span class="cx">     const Event* event = action.event();
</span><span class="lines">@@ -1594,10 +1593,8 @@
</span><span class="cx">             [result setObject:[NSNumber numberWithInt:WebCore::NoButton] forKey:WebActionButtonKey];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (formState) {
-        ASSERT(formState-&gt;form());
-        [result setObject:kit(formState-&gt;form()) forKey:WebActionFormKey];
-    }
</del><ins>+    if (formState)
+        [result setObject:kit(&amp;formState-&gt;form()) forKey:WebActionFormKey];
</ins><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -1623,7 +1620,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement* ownerElement,
</del><ins>+RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement&amp; ownerElement,
</ins><span class="cx">     const String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight)
</span><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="lines">@@ -1632,7 +1629,7 @@
</span><span class="cx">     
</span><span class="cx">     WebFrameView *childView = [[WebFrameView alloc] init];
</span><span class="cx">     
</span><del>-    RefPtr&lt;Frame&gt; result = [WebFrame _createSubframeWithOwnerElement:ownerElement frameName:name frameView:childView];
</del><ins>+    RefPtr&lt;Frame&gt; result = [WebFrame _createSubframeWithOwnerElement:&amp;ownerElement frameName:name frameView:childView];
</ins><span class="cx">     [childView release];
</span><span class="cx"> 
</span><span class="cx">     WebFrame *newFrame = kit(result.get());
</span><span class="lines">@@ -1910,7 +1907,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp; size, HTMLPlugInElement* element, const URL&amp; url,
</del><ins>+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp; size, HTMLPlugInElement&amp; element, const URL&amp; url,
</ins><span class="cx">     const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; mimeType, bool loadManually)
</span><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="lines">@@ -1949,7 +1946,7 @@
</span><span class="cx">             attributes, WebPlugInAttributesKey,
</span><span class="cx">             [NSNumber numberWithInt:loadManually ? WebPlugInModeFull : WebPlugInModeEmbed], WebPlugInModeKey,
</span><span class="cx">             [NSNumber numberWithBool:!loadManually], WebPlugInShouldLoadMainResourceKey,
</span><del>-            kit(element), WebPlugInContainingElementKey,
</del><ins>+            kit(&amp;element), WebPlugInContainingElementKey,
</ins><span class="cx">             // FIXME: We should be passing base URL, see &lt;https://bugs.webkit.org/show_bug.cgi?id=35215&gt;.
</span><span class="cx">             pluginURL, WebPlugInBaseURLKey, // pluginURL might be nil, so add it last
</span><span class="cx">             nil];
</span><span class="lines">@@ -1995,11 +1992,11 @@
</span><span class="cx">     if (pluginPackage) {
</span><span class="cx">         if (shouldBlockPlugin(pluginPackage)) {
</span><span class="cx">             errorCode = WebKitErrorBlockedPlugInVersion;
</span><del>-            if (is&lt;RenderEmbeddedObject&gt;(element-&gt;renderer()))
-                downcast&lt;RenderEmbeddedObject&gt;(*element-&gt;renderer()).setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
</del><ins>+            if (is&lt;RenderEmbeddedObject&gt;(element.renderer()))
+                downcast&lt;RenderEmbeddedObject&gt;(*element.renderer()).setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
</ins><span class="cx">         } else {
</span><span class="cx">             if ([pluginPackage isKindOfClass:[WebPluginPackage class]])
</span><del>-                view = pluginView(m_webFrame.get(), (WebPluginPackage *)pluginPackage, attributeKeys, kit(paramValues), baseURL, kit(element), loadManually);
</del><ins>+                view = pluginView(m_webFrame.get(), (WebPluginPackage *)pluginPackage, attributeKeys, kit(paramValues), baseURL, kit(&amp;element), loadManually);
</ins><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">             else if ([pluginPackage isKindOfClass:[WebNetscapePluginPackage class]]) {
</span><span class="cx">                 WebBaseNetscapePluginView *pluginView = [[[NETSCAPE_PLUGIN_VIEW alloc]
</span><span class="lines">@@ -2011,7 +2008,7 @@
</span><span class="cx">                     attributeKeys:attributeKeys
</span><span class="cx">                     attributeValues:kit(paramValues)
</span><span class="cx">                     loadManually:loadManually
</span><del>-                    element:element] autorelease];
</del><ins>+                    element:&amp;element] autorelease];
</ins><span class="cx"> 
</span><span class="cx">                 return adoptRef(new NetscapePluginWidget(pluginView));
</span><span class="cx">             }
</span><span class="lines">@@ -2082,7 +2079,7 @@
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-PassRefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; size, HTMLAppletElement* element, const URL&amp; baseURL, 
</del><ins>+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; size, HTMLAppletElement&amp; element, const URL&amp; baseURL,
</ins><span class="cx">     const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</span><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="lines">@@ -2100,8 +2097,8 @@
</span><span class="cx">     if (pluginPackage) {
</span><span class="cx">         if (shouldBlockPlugin(pluginPackage)) {
</span><span class="cx">             errorCode = WebKitErrorBlockedPlugInVersion;
</span><del>-            if (is&lt;RenderEmbeddedObject&gt;(element-&gt;renderer()))
-                downcast&lt;RenderEmbeddedObject&gt;(*element-&gt;renderer()).setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
</del><ins>+            if (is&lt;RenderEmbeddedObject&gt;(element.renderer()))
+                downcast&lt;RenderEmbeddedObject&gt;(*element.renderer()).setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
</ins><span class="cx">         } else {
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">             if ([pluginPackage isKindOfClass:[WebNetscapePluginPackage class]]) {
</span><span class="lines">@@ -2113,7 +2110,7 @@
</span><span class="cx">                     attributeKeys:kit(paramNames)
</span><span class="cx">                     attributeValues:kit(paramValues)
</span><span class="cx">                     loadManually:NO
</span><del>-                    element:element] autorelease];
</del><ins>+                    element:&amp;element] autorelease];
</ins><span class="cx">                 if (view)
</span><span class="cx">                     return adoptRef(new NetscapePluginWidget(static_cast&lt;WebBaseNetscapePluginView *&gt;(view)));
</span><span class="cx">             }
</span><span class="lines">@@ -2210,7 +2207,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</del><ins>+Ref&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</ins><span class="cx"> {
</span><span class="cx">     return WebFrameNetworkingContext::create(core(m_webFrame.get()));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameNetworkingContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -23,16 +23,15 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WebFrameNetworkingContext_h
-#define WebFrameNetworkingContext_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &lt;WebCore/FrameNetworkingContext.h&gt;
</span><span class="cx"> 
</span><span class="cx"> class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;WebFrameNetworkingContext&gt; create(WebCore::Frame* frame)
</del><ins>+    static Ref&lt;WebFrameNetworkingContext&gt; create(WebCore::Frame* frame)
</ins><span class="cx">     {
</span><del>-        return adoptRef(new WebFrameNetworkingContext(frame));
</del><ins>+        return adoptRef(*new WebFrameNetworkingContext(frame));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static WebCore::NetworkStorageSession&amp; ensurePrivateBrowsingSession();
</span><span class="lines">@@ -51,7 +50,4 @@
</span><span class="cx">     String sourceApplicationIdentifier() const override;
</span><span class="cx">     WebCore::ResourceError blockedError(const WebCore::ResourceRequest&amp;) const override;
</span><span class="cx">     WebCore::NetworkStorageSession&amp; storageSession() const override;
</span><del>-
</del><span class="cx"> };
</span><del>-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebFrameNetworkingContextmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -47,9 +47,7 @@
</span><span class="cx"> NetworkStorageSession&amp; WebFrameNetworkingContext::ensurePrivateBrowsingSession()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-
</del><span class="cx">     NetworkStorageSession::ensurePrivateBrowsingSession(SessionID::legacyPrivateSessionID(), [[NSBundle mainBundle] bundleIdentifier]);
</span><del>-
</del><span class="cx">     return *NetworkStorageSession::storageSession(SessionID::legacyPrivateSessionID());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -56,7 +54,6 @@
</span><span class="cx"> void WebFrameNetworkingContext::destroyPrivateBrowsingSession()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-
</del><span class="cx">     NetworkStorageSession::destroySession(SessionID::legacyPrivateSessionID());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -68,7 +65,7 @@
</span><span class="cx"> SchedulePairHashSet* WebFrameNetworkingContext::scheduledRunLoopPairs() const
</span><span class="cx"> {
</span><span class="cx">     if (!frame() || !frame()-&gt;page())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     return frame()-&gt;page()-&gt;scheduledRunLoopPairs();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -75,12 +72,12 @@
</span><span class="cx"> RetainPtr&lt;CFDataRef&gt; WebFrameNetworkingContext::sourceApplicationAuditData() const
</span><span class="cx"> {
</span><span class="cx">     if (!frame() || !frame()-&gt;page())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     
</span><span class="cx">     WebView *webview = kit(frame()-&gt;page());
</span><del>-    
</del><span class="cx">     if (!webview)
</span><del>-        return 0;
</del><ins>+        return nullptr;
+
</ins><span class="cx">     return reinterpret_cast&lt;CFDataRef&gt;(webview._sourceApplicationAuditData);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -98,7 +95,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx">     if (frame() &amp;&amp; frame()-&gt;page()-&gt;sessionID().isEphemeral()) {
</span><del>-        if (NetworkStorageSession* session = NetworkStorageSession::storageSession(SessionID::legacyPrivateSessionID()))
</del><ins>+        if (auto* session = NetworkStorageSession::storageSession(SessionID::legacyPrivateSessionID()))
</ins><span class="cx">             return *session;
</span><span class="cx">         // Some requests may still be coming shortly before WebCore updates the session ID and after WebKit destroys the private browsing session.
</span><span class="cx">         LOG_ERROR(&quot;Invalid session ID. Please file a bug unless you just disabled private browsing, in which case it's an expected race.&quot;);
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebOpenPanelResultListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc.  All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &quot;WebUIDelegate.h&quot;
</span><del>-#import &lt;wtf/Forward.h&gt;
</del><ins>+#import &lt;wtf/RefPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class FileChooser;
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx"> 
</span><span class="cx"> @interface WebOpenPanelResultListener : NSObject &lt;WebOpenPanelResultListener&gt;
</span><span class="cx"> {
</span><del>-    WebCore::FileChooser* _chooser;
</del><ins>+    RefPtr&lt;WebCore::FileChooser&gt; _chooser;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (id)initWithChooser:(PassRefPtr&lt;WebCore::FileChooser&gt;)chooser;
</del><ins>+- (id)initWithChooser:(WebCore::FileChooser&amp;)chooser;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebOpenPanelResultListenermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebOpenPanelResultListener.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -36,30 +36,18 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebOpenPanelResultListener
</span><span class="cx"> 
</span><del>-- (id)initWithChooser:(PassRefPtr&lt;FileChooser&gt;)chooser
</del><ins>+- (id)initWithChooser:(FileChooser&amp;)chooser
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="cx">         return nil;
</span><del>-    _chooser = chooser.leakRef();
</del><ins>+    _chooser = &amp;chooser;
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#ifndef NDEBUG
-- (void)dealloc
-{
-    ASSERT(!_chooser);
-    [super dealloc];
-}
-#endif
-
</del><span class="cx"> - (void)cancel
</span><span class="cx"> {
</span><del>-    ASSERT(_chooser);
-    if (!_chooser)
-        return;
-    _chooser-&gt;deref();
-    _chooser = 0;
</del><ins>+    _chooser = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)chooseFilename:(NSString *)filename
</span><span class="lines">@@ -68,8 +56,7 @@
</span><span class="cx">     if (!_chooser)
</span><span class="cx">         return;
</span><span class="cx">     _chooser-&gt;chooseFile(filename);
</span><del>-    _chooser-&gt;deref();
-    _chooser = 0;
</del><ins>+    _chooser = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)chooseFilenames:(NSArray *)filenames
</span><span class="lines">@@ -82,11 +69,11 @@
</span><span class="cx">     for (NSUInteger i = 0; i &lt; count; i++)
</span><span class="cx">         names[i] = [filenames objectAtIndex:i];
</span><span class="cx">     _chooser-&gt;chooseFiles(names);
</span><del>-    _chooser-&gt;deref();
-    _chooser = 0;
</del><ins>+    _chooser = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> - (void)chooseFilename:(NSString *)filename displayString:(NSString *)displayString iconImage:(CGImageRef)imageRef
</span><span class="cx"> {
</span><span class="cx">     [self chooseFilenames:[NSArray arrayWithObject:filename] displayString:displayString iconImage:imageRef];
</span><span class="lines">@@ -98,18 +85,14 @@
</span><span class="cx">     if (!_chooser)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Icon&gt; icon = Icon::createIconForImage(imageRef);
-
-    NSUInteger count = [filenames count];
-    Vector&lt;String&gt; names(count);
-    for (NSUInteger i = 0; i &lt; count; ++i)
-        names[i] = [filenames objectAtIndex:i];
-    _chooser-&gt;chooseMediaFiles(names, displayString, icon.get());
-    
-    // FIXME: we shouldn't be manually deref()'ing here.
-    _chooser-&gt;deref();
</del><ins>+    Vector&lt;String&gt; names;
+    names.reserveInitialCapacity([filenames count]);
+    for (NSString *filename in filenames)
+        names.uncheckedAppend(filename);
+    _chooser-&gt;chooseMediaFiles(names, displayString, Icon::createIconForImage(imageRef).get());
</ins><span class="cx">     _chooser = nullptr;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebArchivemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebArchive.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebArchive.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebView/WebArchive.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -174,25 +174,16 @@
</span><span class="cx">         [self release];
</span><span class="cx">         return nil;
</span><span class="cx">     }
</span><del>-    
-    RefPtr&lt;ArchiveResource&gt; coreMainResource = mainResource ? [mainResource _coreResource] : nullptr;
</del><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; coreResources;
</del><ins>+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; coreResources;
</ins><span class="cx">     for (WebResource *subresource in subresources)
</span><span class="cx">         coreResources.append([subresource _coreResource]);
</span><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt; coreArchives;
</del><ins>+    Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt; coreArchives;
</ins><span class="cx">     for (WebArchive *subframeArchive in subframeArchives)
</span><del>-        coreArchives.append([subframeArchive-&gt;_private coreArchive]);
</del><ins>+        coreArchives.append(*[subframeArchive-&gt;_private coreArchive]);
</ins><span class="cx"> 
</span><del>-    auto coreArchive = LegacyWebArchive::create(WTFMove(coreMainResource), WTFMove(coreResources), WTFMove(coreArchives));
-    if (!coreArchive) {
-        [self release];
-        return nil;
-    }
-
-    [_private setCoreArchive:WTFMove(coreArchive)];
-
</del><ins>+    [_private setCoreArchive:LegacyWebArchive::create([mainResource _coreResource], WTFMove(coreResources), WTFMove(coreArchives))];
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -275,9 +266,10 @@
</span><span class="cx">     // Currently from WebKit API perspective, WebArchives are entirely immutable once created
</span><span class="cx">     // If they ever become mutable, we'll need to rethink this. 
</span><span class="cx">     if (!_private-&gt;cachedMainResource) {
</span><del>-        LegacyWebArchive* coreArchive = [_private coreArchive];
-        if (coreArchive)
-            _private-&gt;cachedMainResource = [[WebResource alloc] _initWithCoreResource:coreArchive-&gt;mainResource()];
</del><ins>+        if (auto* coreArchive = [_private coreArchive]) {
+            if (auto* mainResource = coreArchive-&gt;mainResource())
+                _private-&gt;cachedMainResource = [[WebResource alloc] _initWithCoreResource:*mainResource];
+        }
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     return [[_private-&gt;cachedMainResource retain] autorelease];
</span><span class="lines">@@ -294,12 +286,11 @@
</span><span class="cx">         if (!coreArchive)
</span><span class="cx">             _private-&gt;cachedSubresources = [[NSArray alloc] init];
</span><span class="cx">         else {
</span><del>-            const Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt;&amp; subresources(coreArchive-&gt;subresources());
</del><ins>+            auto&amp; subresources = coreArchive-&gt;subresources();
</ins><span class="cx">             NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:subresources.size()];
</span><span class="cx">             _private-&gt;cachedSubresources = mutableArray;
</span><del>-            for (unsigned i = 0; i &lt; subresources.size(); ++i) {
-                WebResource *resource = [[WebResource alloc] _initWithCoreResource:subresources[i].get()];
-                if (resource) {
</del><ins>+            for (auto&amp; subresource : subresources) {
+                if (WebResource *resource = [[WebResource alloc] _initWithCoreResource:subresource.get()]) {
</ins><span class="cx">                     [mutableArray addObject:resource];
</span><span class="cx">                     [resource release];
</span><span class="cx">                 }
</span><span class="lines">@@ -318,15 +309,15 @@
</span><span class="cx">     // Currently from WebKit API perspective, WebArchives are entirely immutable once created
</span><span class="cx">     // If they ever become mutable, we'll need to rethink this.  
</span><span class="cx">     if (!_private-&gt;cachedSubframeArchives) {
</span><del>-        LegacyWebArchive* coreArchive = [_private coreArchive];
</del><ins>+        auto* coreArchive = [_private coreArchive];
</ins><span class="cx">         if (!coreArchive)
</span><span class="cx">             _private-&gt;cachedSubframeArchives = [[NSArray alloc] init];
</span><span class="cx">         else {
</span><del>-            const Vector&lt;RefPtr&lt;Archive&gt;&gt;&amp; subframeArchives(coreArchive-&gt;subframeArchives());
-            NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:subframeArchives.size()];
</del><ins>+            auto&amp; subframeArchives = coreArchive-&gt;subframeArchives();
+            auto mutableArray = [[NSMutableArray alloc] initWithCapacity:subframeArchives.size()];
</ins><span class="cx">             _private-&gt;cachedSubframeArchives = mutableArray;
</span><span class="cx">             for (unsigned i = 0; i &lt; subframeArchives.size(); ++i) {
</span><del>-                WebArchive *archive = [[WebArchive alloc] _initWithCoreLegacyWebArchive:(LegacyWebArchive *)subframeArchives[i].get()];
</del><ins>+                WebArchive *archive = [[WebArchive alloc] _initWithCoreLegacyWebArchive:(LegacyWebArchive *)subframeArchives[i].ptr()];
</ins><span class="cx">                 [mutableArray addObject:archive];
</span><span class="cx">                 [archive release];
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebDataSourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebDataSource.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebDataSource.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebView/WebDataSource.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -166,25 +166,22 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)_addSubframeArchives:(NSArray *)subframeArchives
</span><span class="cx"> {
</span><del>-    // FIXME: This SPI is poor, poor design.  Can we come up with another solution for those who need it?
-    NSEnumerator *enumerator = [subframeArchives objectEnumerator];
-    WebArchive *archive;
-    while ((archive = [enumerator nextObject]) != nil)
-        toPrivate(_private)-&gt;loader-&gt;addAllArchiveResources([archive _coreLegacyWebArchive]);
</del><ins>+    // FIXME: This SPI is poor, poor design. Can we come up with another solution for those who need it?
+    for (WebArchive *archive in subframeArchives)
+        toPrivate(_private)-&gt;loader-&gt;addAllArchiveResources(*[archive _coreLegacyWebArchive]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> - (NSFileWrapper *)_fileWrapperForURL:(NSURL *)URL
</span><span class="cx"> {
</span><span class="cx">     if ([URL isFileURL])
</span><span class="cx">         return [[[NSFileWrapper alloc] initWithURL:[URL URLByResolvingSymlinksInPath] options:0 error:nullptr] autorelease];
</span><span class="cx"> 
</span><del>-    WebResource *resource = [self subresourceForURL:URL];
-    if (resource)
</del><ins>+    if (auto resource = [self subresourceForURL:URL])
</ins><span class="cx">         return [resource _fileWrapperRepresentation];
</span><del>-    
-    NSCachedURLResponse *cachedResponse = [[self _webView] _cachedResponseForURL:URL];
-    if (cachedResponse) {
</del><ins>+
+    if (auto cachedResponse = [[self _webView] _cachedResponseForURL:URL]) {
</ins><span class="cx">         NSFileWrapper *wrapper = [[[NSFileWrapper alloc] initRegularFileWithContents:[cachedResponse data]] autorelease];
</span><span class="cx">         [wrapper setPreferredFilename:[[cachedResponse response] suggestedFilename]];
</span><span class="cx">         return wrapper;
</span><span class="lines">@@ -192,6 +189,7 @@
</span><span class="cx">     
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)_responseMIMEType
</span><span class="lines">@@ -305,9 +303,10 @@
</span><span class="cx">         NSString *MIMEType = [mainResource MIMEType];
</span><span class="cx">         if ([WebView canShowMIMETypeAsHTML:MIMEType]) {
</span><span class="cx">             NSString *markupString = [[NSString alloc] initWithData:[mainResource data] encoding:NSUTF8StringEncoding];
</span><ins>+
</ins><span class="cx">             // FIXME: seems poor form to do this as a side effect of getting a document fragment
</span><span class="cx">             if (toPrivate(_private)-&gt;loader)
</span><del>-                toPrivate(_private)-&gt;loader-&gt;addAllArchiveResources([archive _coreLegacyWebArchive]);
</del><ins>+                toPrivate(_private)-&gt;loader-&gt;addAllArchiveResources(*[archive _coreLegacyWebArchive]);
</ins><span class="cx"> 
</span><span class="cx">             DOMDocumentFragment *fragment = [[self webFrame] _documentFragmentWithMarkupString:markupString baseURLString:[[mainResource URL] _web_originalDataAsString]];
</span><span class="cx">             [markupString release];
</span><span class="lines">@@ -324,7 +323,7 @@
</span><span class="cx"> {
</span><span class="cx">     DOMElement *imageElement = [self _imageElementWithImageResource:resource];
</span><span class="cx">     if (!imageElement)
</span><del>-        return 0;
</del><ins>+        return nil;
</ins><span class="cx">     DOMDocumentFragment *fragment = [[[self webFrame] DOMDocument] createDocumentFragment];
</span><span class="cx">     [fragment appendChild:imageElement];
</span><span class="cx">     return fragment;
</span><span class="lines">@@ -519,32 +518,31 @@
</span><span class="cx"> - (WebResource *)mainResource
</span><span class="cx"> {
</span><span class="cx">     auto coreResource = toPrivate(_private)-&gt;loader-&gt;mainResource();
</span><del>-    return [[[WebResource alloc] _initWithCoreResource:WTFMove(coreResource)] autorelease];
</del><ins>+    if (!coreResource)
+        return nil;
+    return [[[WebResource alloc] _initWithCoreResource:coreResource.releaseNonNull()] autorelease];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSArray *)subresources
</span><span class="cx"> {
</span><span class="cx">     auto coreSubresources = toPrivate(_private)-&gt;loader-&gt;subresources();
</span><del>-
</del><span class="cx">     auto subresources = adoptNS([[NSMutableArray alloc] initWithCapacity:coreSubresources.size()]);
</span><del>-    for (const auto&amp; coreSubresource : coreSubresources) {
-        if (auto resource = adoptNS([[WebResource alloc] _initWithCoreResource:coreSubresource]))
</del><ins>+    for (auto&amp; coreSubresource : coreSubresources) {
+        if (auto resource = adoptNS([[WebResource alloc] _initWithCoreResource:coreSubresource.copyRef()]))
</ins><span class="cx">             [subresources addObject:resource.get()];
</span><span class="cx">     }
</span><del>-
</del><span class="cx">     return subresources.autorelease();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (WebResource *)subresourceForURL:(NSURL *)URL
</span><span class="cx"> {
</span><del>-    RefPtr&lt;ArchiveResource&gt; subresource = toPrivate(_private)-&gt;loader-&gt;subresource(URL);
-    
-    return subresource ? [[[WebResource alloc] _initWithCoreResource:subresource.get()] autorelease] : nil;
</del><ins>+    auto subresource = toPrivate(_private)-&gt;loader-&gt;subresource(URL);
+    return subresource ? [[[WebResource alloc] _initWithCoreResource:subresource.releaseNonNull()] autorelease] : nil;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)addSubresource:(WebResource *)subresource
</span><span class="cx"> {    
</span><del>-    toPrivate(_private)-&gt;loader-&gt;addArchiveResource(*[subresource _coreResource]);
</del><ins>+    toPrivate(_private)-&gt;loader-&gt;addArchiveResource([subresource _coreResource]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebResourcemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebResource.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebResource.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebView/WebResource.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2005-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -57,9 +57,9 @@
</span><span class="cx"> 
</span><span class="cx"> @interface WebResourcePrivate : NSObject {
</span><span class="cx"> @public
</span><del>-    ArchiveResource* coreResource;
</del><ins>+    RefPtr&lt;ArchiveResource&gt; coreResource;
</ins><span class="cx"> }
</span><del>-- (instancetype)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)coreResource;
</del><ins>+- (instancetype)initWithCoreResource:(Ref&lt;ArchiveResource&gt;&amp;&amp;)coreResource;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WebResourcePrivate
</span><span class="lines">@@ -78,13 +78,12 @@
</span><span class="cx">     return [super init];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (instancetype)initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)passedResource
</del><ins>+- (instancetype)initWithCoreResource:(Ref&lt;ArchiveResource&gt;&amp;&amp;)passedResource
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="cx">         return nil;
</span><del>-    // Acquire the PassRefPtr&lt;&gt;'s ref as our own manual ref
-    coreResource = passedResource.leakRef();
</del><ins>+    coreResource = WTFMove(passedResource);
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -92,9 +91,6 @@
</span><span class="cx"> {
</span><span class="cx">     if (WebCoreObjCScheduleDeallocateOnMainThread([WebResourcePrivate class], self))
</span><span class="cx">         return;
</span><del>-
-    if (coreResource)
-        coreResource-&gt;deref();
</del><span class="cx">     [super dealloc];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -153,14 +149,19 @@
</span><span class="cx">         return nil;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _private = [[WebResourcePrivate alloc] initWithCoreResource:ArchiveResource::create(SharedBuffer::wrapNSData(data), url, mimeType, textEncoding, frameName, response)];
</del><ins>+    auto coreResource = ArchiveResource::create(SharedBuffer::wrapNSData(data), url, mimeType, textEncoding, frameName, response);
+    if (!coreResource) {
+        [self release];
+        return nil;
+    }
</ins><span class="cx"> 
</span><ins>+    _private = [[WebResourcePrivate alloc] initWithCoreResource:coreResource.releaseNonNull()];
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)encodeWithCoder:(NSCoder *)encoder
</span><span class="cx"> {
</span><del>-    ArchiveResource *resource = _private-&gt;coreResource;
</del><ins>+    auto* resource = _private-&gt;coreResource.get();
</ins><span class="cx">     
</span><span class="cx">     NSData *data = nil;
</span><span class="cx">     NSURL *url = nil;
</span><span class="lines">@@ -209,8 +210,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!_private-&gt;coreResource)
</span><span class="cx">         return nil;
</span><del>-    NSURL *url = _private-&gt;coreResource-&gt;url();
-    return url;
</del><ins>+    return _private-&gt;coreResource-&gt;url();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSString *)MIMEType
</span><span class="lines">@@ -252,22 +252,19 @@
</span><span class="cx"> 
</span><span class="cx"> @implementation WebResource (WebResourceInternal)
</span><span class="cx"> 
</span><del>-- (id)_initWithCoreResource:(PassRefPtr&lt;ArchiveResource&gt;)coreResource
</del><ins>+- (id)_initWithCoreResource:(Ref&lt;ArchiveResource&gt;&amp;&amp;)coreResource
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="cx">         return nil;
</span><del>-            
-    ASSERT(coreResource);
-    
-    _private = [[WebResourcePrivate alloc] initWithCoreResource:coreResource];
-            
</del><ins>+
+    _private = [[WebResourcePrivate alloc] initWithCoreResource:WTFMove(coreResource)];
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (WebCore::ArchiveResource *)_coreResource
</del><ins>+- (WebCore::ArchiveResource&amp;)_coreResource
</ins><span class="cx"> {
</span><del>-    return _private-&gt;coreResource;
</del><ins>+    return *_private-&gt;coreResource;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -304,8 +301,13 @@
</span><span class="cx">         return nil;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    _private = [[WebResourcePrivate alloc] initWithCoreResource:ArchiveResource::create(SharedBuffer::wrapNSData(copyData ? [[data copy] autorelease] : data), URL, MIMEType, textEncodingName, frameName, response)];
</del><ins>+    auto coreResource = ArchiveResource::create(SharedBuffer::wrapNSData(copyData ? [[data copy] autorelease] : data), URL, MIMEType, textEncodingName, frameName, response);
+    if (!coreResource) {
+        [self release];
+        return nil;
+    }
</ins><span class="cx"> 
</span><ins>+    _private = [[WebResourcePrivate alloc] initWithCoreResource:coreResource.releaseNonNull()];
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebResourceInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebResourceInternal.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebResourceInternal.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/mac/WebView/WebResourceInternal.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> #import &quot;WebResourcePrivate.h&quot;
</span><del>-#import &lt;wtf/PassRefPtr.h&gt;
</del><ins>+#import &lt;wtf/Ref.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     class ArchiveResource;
</span><span class="lines">@@ -34,6 +34,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @interface WebResource (WebResourceInternal)
</span><del>-- (id)_initWithCoreResource:(PassRefPtr&lt;WebCore::ArchiveResource&gt;)coreResource;
-- (WebCore::ArchiveResource*)_coreResource;
</del><ins>+- (id)_initWithCoreResource:(Ref&lt;WebCore::ArchiveResource&gt;&amp;&amp;)coreResource;
+- (WebCore::ArchiveResource&amp;)_coreResource;
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/ChangeLog        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,3 +1,50 @@
</span><ins>+2017-01-15  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove PassRefPtr from &quot;loader&quot; directory of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=167055
+
+        Reviewed by Alex Christensen.
+
+        * Plugins/PluginView.cpp:
+        (WebCore::PluginView::mediaCanStart): Fix call to dispatchDidFailToStartPlugin
+        by calling it directly on WebFrameLoaderClient. If my theory is correct, the old
+        call has been broken and doing nothing since r177941, two years ago, which made
+        the argument types different between FrameLoaderClient and WebFrameLoaderClient,
+        leaving WebFrameLoaderClient::dispatchDidFailToStartPlugin as dead code.
+
+        * WebCoreSupport/WebChromeClient.cpp:
+        (WebChromeClient::runOpenPanel): Updated for change to ChromeClient.
+        * WebCoreSupport/WebChromeClient.h: Ditto.
+
+        * WebCoreSupport/WebEditorClient.cpp:
+        (WebEditorUndoCommand::WebEditorUndoCommand): Take a reference instead of
+        a PassRefPtr. Also use Ref instead of RefPtr.
+        (WebEditorClient::shouldChangeTypingStyle): Deleted. Empty function that was
+        never called.
+        (WebEditorClient::webViewDidChangeTypingStyle): Ditto.
+        (WebEditorClient::webViewDidChangeSelection): Ditto.
+        (WebEditorClient::registerUndoStep):  Take reference instead of PassRefPtr.
+        (WebEditorClient::registerRedoStep): Ditto.
+        * WebCoreSupport/WebEditorClient.h: Updated for the above. Also marked the
+        class and member functions final and made them all private, which will
+        help us catch if there are any that don't correctly match WebCore.
+
+        * WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Updated
+        for change to ChromeClient.
+        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
+        (WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
+        (WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
+        (WebFrameLoaderClient::createFrame): Ditto. Also merged two functions into
+        one because one was private and only called by the other.
+        (WebFrameLoaderClient::createPlugin): Ditto.
+        (WebFrameLoaderClient::createJavaAppletWidget): Ditto.
+        (WebFrameLoaderClient::createNetworkingContext): Ditto.
+        * WebCoreSupport/WebFrameLoaderClient.h: Ditto.
+
+        * WebCoreSupport/WebFrameNetworkingContext.h:
+        (WebFrameNetworkingContext::create): Return a Ref instead of a PassRefPtr.
+
</ins><span class="cx"> 2017-01-12  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove unnecessary includes of Page.h
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginView.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginView.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/Plugins/PluginView.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
</span><span class="cx">  * Copyright (C) 2010 Girish Ramakrishnan &lt;girish@forwardbias.in&gt;
</span><span class="cx">  *
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;PluginDatabase.h&quot;
</span><span class="cx"> #include &quot;PluginDebug.h&quot;
</span><span class="cx"> #include &quot;PluginPackage.h&quot;
</span><ins>+#include &quot;WebFrameLoaderClient.h&quot;
</ins><span class="cx"> #include &lt;WebCore/BridgeJSC.h&gt;
</span><span class="cx"> #include &lt;WebCore/Chrome.h&gt;
</span><span class="cx"> #include &lt;WebCore/CommonVM.h&gt;
</span><span class="lines">@@ -275,7 +276,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_isStarted);
</span><span class="cx">     if (!start())
</span><del>-        parentFrame()-&gt;loader().client().dispatchDidFailToStartPlugin(this);
</del><ins>+        static_cast&lt;WebFrameLoaderClient&amp;&gt;(parentFrame()-&gt;loader().client()).dispatchDidFailToStartPlugin(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PluginView::~PluginView()
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -618,15 +618,13 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebChromeClient::runOpenPanel(Frame*, PassRefPtr&lt;FileChooser&gt; prpFileChooser)
</del><ins>+void WebChromeClient::runOpenPanel(Frame&amp;, FileChooser&amp; fileChooser)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;FileChooser&gt; fileChooser = prpFileChooser;
-
</del><span class="cx">     HWND viewWindow;
</span><span class="cx">     if (FAILED(m_webView-&gt;viewWindow(&amp;viewWindow)))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    bool multiFile = fileChooser-&gt;settings().allowsMultipleFiles;
</del><ins>+    bool multiFile = fileChooser.settings().allowsMultipleFiles;
</ins><span class="cx">     Vector&lt;WCHAR&gt; fileBuf(multiFile ? maxFilePathsListSize : MAX_PATH);
</span><span class="cx"> 
</span><span class="cx">     OPENFILENAME ofn;
</span><span class="lines">@@ -675,7 +673,7 @@
</span><span class="cx">         } else
</span><span class="cx">             fileList.append(file);
</span><span class="cx">         ASSERT(fileList.size());
</span><del>-        fileChooser-&gt;chooseFiles(fileList);
</del><ins>+        fileChooser.chooseFiles(fileList);
</ins><span class="cx">     }
</span><span class="cx">     // FIXME: Show some sort of error if too many files are selected and the buffer is too small.  For now, this will fail silently.
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx">     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
</span><span class="cx">     virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t totalSpaceNeeded);
</span><span class="cx"> 
</span><del>-    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr&lt;WebCore::FileChooser&gt;);
</del><ins>+    virtual void runOpenPanel(WebCore::Frame&amp;, WebCore::FileChooser&amp;);
</ins><span class="cx">     virtual void loadIconForFiles(const Vector&lt;WTF::String&gt;&amp;, WebCore::FileIconLoader&amp;);
</span><span class="cx"> 
</span><span class="cx">     virtual void setCursor(const WebCore::Cursor&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebEditorClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2007, 2011, 2014-2015 Apple Inc.  All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc.  All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -374,22 +374,6 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool WebEditorClient::shouldChangeTypingStyle(StyleProperties*, StyleProperties*)
-{
-    notImplemented();
-    return false;
-}
-
-void WebEditorClient::webViewDidChangeTypingStyle(WebNotification* /*notification*/)
-{
-    notImplemented();
-}
-
-void WebEditorClient::webViewDidChangeSelection(WebNotification* /*notification*/)
-{
-    notImplemented();
-}
-
</del><span class="cx"> bool WebEditorClient::smartInsertDeleteEnabled(void)
</span><span class="cx"> {
</span><span class="cx">     Page* page = m_webView-&gt;page();
</span><span class="lines">@@ -521,7 +505,7 @@
</span><span class="cx"> class WebEditorUndoCommand : public IWebUndoCommand
</span><span class="cx"> {
</span><span class="cx"> public:
</span><del>-    WebEditorUndoCommand(PassRefPtr&lt;UndoStep&gt;, bool isUndo);
</del><ins>+    WebEditorUndoCommand(UndoStep&amp;, bool isUndo);
</ins><span class="cx">     void execute();
</span><span class="cx"> 
</span><span class="cx">     // IUnknown
</span><span class="lines">@@ -531,11 +515,11 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     ULONG m_refCount;
</span><del>-    RefPtr&lt;UndoStep&gt; m_step;
</del><ins>+    Ref&lt;UndoStep&gt; m_step;
</ins><span class="cx">     bool m_isUndo;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-WebEditorUndoCommand::WebEditorUndoCommand(PassRefPtr&lt;UndoStep&gt; step, bool isUndo)
</del><ins>+WebEditorUndoCommand::WebEditorUndoCommand(UndoStep&amp; step, bool isUndo)
</ins><span class="cx">     : m_step(step)
</span><span class="cx">     , m_isUndo(isUndo) 
</span><span class="cx">     , m_refCount(1)
</span><span class="lines">@@ -640,11 +624,11 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerUndoStep(PassRefPtr&lt;UndoStep&gt; step)
</del><ins>+void WebEditorClient::registerUndoStep(UndoStep&amp; step)
</ins><span class="cx"> {
</span><span class="cx">     IWebUIDelegate* uiDelegate = 0;
</span><span class="cx">     if (SUCCEEDED(m_webView-&gt;uiDelegate(&amp;uiDelegate))) {
</span><del>-        String actionName = undoNameForEditAction(step-&gt;editingAction());
</del><ins>+        String actionName = undoNameForEditAction(step.editingAction());
</ins><span class="cx">         WebEditorUndoCommand* undoCommand = new WebEditorUndoCommand(step, true);
</span><span class="cx">         if (!undoCommand)
</span><span class="cx">             return;
</span><span class="lines">@@ -656,7 +640,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerRedoStep(PassRefPtr&lt;UndoStep&gt; step)
</del><ins>+void WebEditorClient::registerRedoStep(UndoStep&amp; step)
</ins><span class="cx"> {
</span><span class="cx">     IWebUIDelegate* uiDelegate = 0;
</span><span class="cx">     if (SUCCEEDED(m_webView-&gt;uiDelegate(&amp;uiDelegate))) {
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebEditorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebEditorClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2007 Apple Inc.  All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc.  All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -33,91 +33,87 @@
</span><span class="cx"> class WebNotification;
</span><span class="cx"> class WebEditorUndoTarget;
</span><span class="cx"> 
</span><del>-class WebEditorClient : public WebCore::EditorClient, public WebCore::TextCheckerClient {
</del><ins>+class WebEditorClient final : public WebCore::EditorClient, public WebCore::TextCheckerClient {
</ins><span class="cx"> public:
</span><span class="cx">     WebEditorClient(WebView*);
</span><span class="cx">     ~WebEditorClient();
</span><span class="cx"> 
</span><del>-    virtual bool isContinuousSpellCheckingEnabled();
-    virtual void toggleGrammarChecking();
-    virtual bool isGrammarCheckingEnabled();
-    virtual void toggleContinuousSpellChecking();
-    virtual int spellCheckerDocumentTag();
</del><ins>+private:
+    bool isContinuousSpellCheckingEnabled() final;
+    void toggleGrammarChecking() final;
+    bool isGrammarCheckingEnabled() final;
+    void toggleContinuousSpellChecking() final;
+    int spellCheckerDocumentTag() final;
</ins><span class="cx"> 
</span><del>-    virtual bool shouldBeginEditing(WebCore::Range*);
-    virtual bool shouldEndEditing(WebCore::Range*);
-    virtual bool shouldInsertText(const WTF::String&amp;, WebCore::Range*, WebCore::EditorInsertAction);
</del><ins>+    bool shouldBeginEditing(WebCore::Range*) final;
+    bool shouldEndEditing(WebCore::Range*) final;
+    bool shouldInsertText(const WTF::String&amp;, WebCore::Range*, WebCore::EditorInsertAction) final;
</ins><span class="cx"> 
</span><del>-    virtual void didBeginEditing();
-    virtual void didEndEditing();
-    virtual void willWriteSelectionToPasteboard(WebCore::Range*);
-    virtual void didWriteSelectionToPasteboard();
-    virtual void getClientPasteboardDataForRange(WebCore::Range*, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;WebCore::SharedBuffer&gt; &gt;&amp; pasteboardData);
</del><ins>+    void didBeginEditing() final;
+    void didEndEditing() final;
+    void willWriteSelectionToPasteboard(WebCore::Range*) final;
+    void didWriteSelectionToPasteboard() final;
+    void getClientPasteboardDataForRange(WebCore::Range*, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;WebCore::SharedBuffer&gt;&gt;&amp; pasteboardData) final;
</ins><span class="cx"> 
</span><del>-    virtual void respondToChangedContents();
-    virtual void respondToChangedSelection(WebCore::Frame*);
</del><ins>+    void respondToChangedContents() final;
+    void respondToChangedSelection(WebCore::Frame*) final;
</ins><span class="cx">     void didChangeSelectionAndUpdateLayout() final { }
</span><span class="cx">     void updateEditorStateAfterLayoutIfEditabilityChanged() final { } 
</span><span class="cx">     void canceledComposition() final;
</span><span class="cx">     void discardedComposition(WebCore::Frame*) final;
</span><span class="cx"> 
</span><del>-    bool shouldDeleteRange(WebCore::Range*);
</del><ins>+    bool shouldDeleteRange(WebCore::Range*) final;
</ins><span class="cx"> 
</span><del>-    bool shouldInsertNode(WebCore::Node*, WebCore::Range* replacingRange, WebCore::EditorInsertAction);
-    bool shouldApplyStyle(WebCore::StyleProperties*, WebCore::Range*);
-    void didApplyStyle();
-    bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*);
-    bool shouldChangeTypingStyle(WebCore::StyleProperties* currentStyle, WebCore::StyleProperties* toProposedStyle);
</del><ins>+    bool shouldInsertNode(WebCore::Node*, WebCore::Range* replacingRange, WebCore::EditorInsertAction) final;
+    bool shouldApplyStyle(WebCore::StyleProperties*, WebCore::Range*) final;
+    void didApplyStyle() final;
+    bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*) final;
</ins><span class="cx"> 
</span><del>-    void webViewDidChangeTypingStyle(WebNotification*);
-    void webViewDidChangeSelection(WebNotification*);
</del><ins>+    bool smartInsertDeleteEnabled() final;
+    bool isSelectTrailingWhitespaceEnabled() final;
</ins><span class="cx"> 
</span><del>-    bool smartInsertDeleteEnabled();
-    bool isSelectTrailingWhitespaceEnabled();
-
-    void registerUndoStep(PassRefPtr&lt;WebCore::UndoStep&gt;);
-    void registerRedoStep(PassRefPtr&lt;WebCore::UndoStep&gt;);
</del><ins>+    void registerUndoStep(WebCore::UndoStep&amp;) final;
+    void registerRedoStep(WebCore::UndoStep&amp;) final;
</ins><span class="cx">     void clearUndoRedoOperations();
</span><span class="cx"> 
</span><del>-    bool canCopyCut(WebCore::Frame*, bool defaultValue) const;
-    bool canPaste(WebCore::Frame*, bool defaultValue) const;
-    bool canUndo() const;
-    bool canRedo() const;
</del><ins>+    bool canCopyCut(WebCore::Frame*, bool defaultValue) const final;
+    bool canPaste(WebCore::Frame*, bool defaultValue) const final;
+    bool canUndo() const final;
+    bool canRedo() const final;
</ins><span class="cx">     
</span><del>-    void undo();
-    void redo();    
</del><ins>+    void undo() final;
+    void redo() final;
</ins><span class="cx">     
</span><del>-    bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting) override;
-    void textFieldDidBeginEditing(WebCore::Element*) override;
-    void textFieldDidEndEditing(WebCore::Element*) override;
-    void textDidChangeInTextField(WebCore::Element*) override;
-    bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*) override;
-    void textWillBeDeletedInTextField(WebCore::Element* input) override;
-    void textDidChangeInTextArea(WebCore::Element*) override;
-    void overflowScrollPositionChanged() override { }
</del><ins>+    bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting) final;
+    void textFieldDidBeginEditing(WebCore::Element*) final;
+    void textFieldDidEndEditing(WebCore::Element*) final;
+    void textDidChangeInTextField(WebCore::Element*) final;
+    bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*) final;
+    void textWillBeDeletedInTextField(WebCore::Element* input) final;
+    void textDidChangeInTextArea(WebCore::Element*) final;
+    void overflowScrollPositionChanged() final { }
</ins><span class="cx"> 
</span><del>-    void handleKeyboardEvent(WebCore::KeyboardEvent*);
-    void handleInputMethodKeydown(WebCore::KeyboardEvent*);
</del><ins>+    void handleKeyboardEvent(WebCore::KeyboardEvent*) final;
+    void handleInputMethodKeydown(WebCore::KeyboardEvent*) final;
</ins><span class="cx"> 
</span><del>-    bool shouldEraseMarkersAfterChangeSelection(WebCore::TextCheckingType) const override;
-    void ignoreWordInSpellDocument(const WTF::String&amp;) override;
-    void learnWord(const WTF::String&amp;) override;
-    void checkSpellingOfString(StringView, int* misspellingLocation, int* misspellingLength) override;
-    WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&amp;) override;
-    void checkGrammarOfString(StringView, Vector&lt;WebCore::GrammarDetail&gt;&amp;, int* badGrammarLocation, int* badGrammarLength) override;
-    void updateSpellingUIWithGrammarString(const WTF::String&amp;, const WebCore::GrammarDetail&amp;) override;
-    void updateSpellingUIWithMisspelledWord(const WTF::String&amp;) override;
-    void showSpellingUI(bool show) override;
-    bool spellingUIIsShowing() override;
-    void getGuessesForWord(const WTF::String&amp; word, const WTF::String&amp; context, const WebCore::VisibleSelection&amp; currentSelection, WTF::Vector&lt;WTF::String&gt;&amp; guesses) override;
</del><ins>+    bool shouldEraseMarkersAfterChangeSelection(WebCore::TextCheckingType) const final;
+    void ignoreWordInSpellDocument(const WTF::String&amp;) final;
+    void learnWord(const WTF::String&amp;) final;
+    void checkSpellingOfString(StringView, int* misspellingLocation, int* misspellingLength) final;
+    WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&amp;) final;
+    void checkGrammarOfString(StringView, Vector&lt;WebCore::GrammarDetail&gt;&amp;, int* badGrammarLocation, int* badGrammarLength) final;
+    void updateSpellingUIWithGrammarString(const WTF::String&amp;, const WebCore::GrammarDetail&amp;) final;
+    void updateSpellingUIWithMisspelledWord(const WTF::String&amp;) final;
+    void showSpellingUI(bool show) final;
+    bool spellingUIIsShowing() final;
+    void getGuessesForWord(const WTF::String&amp; word, const WTF::String&amp; context, const WebCore::VisibleSelection&amp; currentSelection, WTF::Vector&lt;WTF::String&gt;&amp; guesses) final;
</ins><span class="cx"> 
</span><del>-    void willSetInputMethodState() override;
-    void setInputMethodState(bool) override;
-    void requestCheckingOfString(WebCore::TextCheckingRequest&amp;, const WebCore::VisibleSelection&amp;) override { }
</del><ins>+    void willSetInputMethodState() final;
+    void setInputMethodState(bool) final;
+    void requestCheckingOfString(WebCore::TextCheckingRequest&amp;, const WebCore::VisibleSelection&amp;) final { }
</ins><span class="cx"> 
</span><del>-    WebCore::TextCheckerClient* textChecker() override { return this; }
</del><ins>+    WebCore::TextCheckerClient* textChecker() final { return this; }
</ins><span class="cx"> 
</span><del>-private:
</del><span class="cx">     WebView* m_webView;
</span><span class="cx">     WebEditorUndoTarget* m_undoTarget;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -533,7 +533,7 @@
</span><span class="cx">     function(PolicyUse);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, FormState* formState, const String&amp; frameName, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebView* webView = m_webFrame-&gt;webView();
</span><span class="cx">     Frame* coreFrame = core(m_webFrame);
</span><span class="lines">@@ -544,7 +544,7 @@
</span><span class="cx">         policyDelegate = DefaultPolicyDelegate::sharedInstance();
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IWebURLRequest&gt; urlRequest(AdoptCOM, WebMutableURLRequest::createInstance(request));
</span><del>-    COMPtr&lt;WebActionPropertyBag&gt; actionInformation(AdoptCOM, WebActionPropertyBag::createInstance(action, formState ? formState-&gt;form() : 0, coreFrame));
</del><ins>+    COMPtr&lt;WebActionPropertyBag&gt; actionInformation(AdoptCOM, WebActionPropertyBag::createInstance(action, formState ? &amp;formState-&gt;form() : nullptr, coreFrame));
</ins><span class="cx"> 
</span><span class="cx">     if (SUCCEEDED(policyDelegate-&gt;decidePolicyForNewWindowAction(webView, actionInformation.get(), urlRequest.get(), BString(frameName), setUpPolicyListener(function).get())))
</span><span class="cx">         return;
</span><span class="lines">@@ -552,7 +552,7 @@
</span><span class="cx">     function(PolicyUse);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; action, const ResourceRequest&amp; request, FormState* formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebView* webView = m_webFrame-&gt;webView();
</span><span class="cx">     Frame* coreFrame = core(m_webFrame);
</span><span class="lines">@@ -563,7 +563,7 @@
</span><span class="cx">         policyDelegate = DefaultPolicyDelegate::sharedInstance();
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IWebURLRequest&gt; urlRequest(AdoptCOM, WebMutableURLRequest::createInstance(request));
</span><del>-    COMPtr&lt;WebActionPropertyBag&gt; actionInformation(AdoptCOM, WebActionPropertyBag::createInstance(action, formState ? formState-&gt;form() : 0, coreFrame));
</del><ins>+    COMPtr&lt;WebActionPropertyBag&gt; actionInformation(AdoptCOM, WebActionPropertyBag::createInstance(action, formState ? &amp;formState-&gt;form() : nullptr, coreFrame));
</ins><span class="cx"> 
</span><span class="cx">     if (SUCCEEDED(policyDelegate-&gt;decidePolicyForNavigationAction(webView, actionInformation.get(), urlRequest.get(), m_webFrame, setUpPolicyListener(function).get())))
</span><span class="cx">         return;
</span><span class="lines">@@ -582,11 +582,11 @@
</span><span class="cx">     policyDelegate-&gt;unableToImplementPolicyWithError(webView, webError.get(), m_webFrame);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr&lt;WebCore::FormState&gt;)
</del><ins>+void WebFrameLoaderClient::dispatchWillSendSubmitEvent(Ref&lt;WebCore::FormState&gt;&amp;&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt; formState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchWillSubmitForm(FormState&amp; formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebView* webView = m_webFrame-&gt;webView();
</span><span class="cx">     Frame* coreFrame = core(m_webFrame);
</span><span class="lines">@@ -599,10 +599,10 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    COMPtr&lt;IDOMElement&gt; formElement(AdoptCOM, DOMElement::createInstance(formState-&gt;form()));
</del><ins>+    COMPtr&lt;IDOMElement&gt; formElement(AdoptCOM, DOMElement::createInstance(&amp;formState.form()));
</ins><span class="cx"> 
</span><span class="cx">     HashMap&lt;String, String&gt; formValuesMap;
</span><del>-    const StringPairVector&amp; textFieldValues = formState-&gt;textFieldValues();
</del><ins>+    const StringPairVector&amp; textFieldValues = formState.textFieldValues();
</ins><span class="cx">     size_t size = textFieldValues.size();
</span><span class="cx">     for (size_t i = 0; i &lt; size; ++i)
</span><span class="cx">         formValuesMap.add(textFieldValues[i].first, textFieldValues[i].second);
</span><span class="lines">@@ -609,7 +609,7 @@
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IPropertyBag&gt; formValuesPropertyBag(AdoptCOM, COMPropertyBag&lt;String&gt;::createInstance(formValuesMap));
</span><span class="cx"> 
</span><del>-    COMPtr&lt;WebFrame&gt; sourceFrame(kit(formState-&gt;sourceDocument()-&gt;frame()));
</del><ins>+    COMPtr&lt;WebFrame&gt; sourceFrame(kit(formState.sourceDocument().frame()));
</ins><span class="cx">     if (SUCCEEDED(formDelegate-&gt;willSubmitForm(m_webFrame, sourceFrame.get(), formElement.get(), formValuesPropertyBag.get(), setUpPolicyListener(function).get())))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -1012,29 +1012,21 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement* ownerElement,
-                            const String&amp; referrer, bool /*allowsScrolling*/, int /*marginWidth*/, int /*marginHeight*/)
</del><ins>+RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement&amp; ownerElement,
+    const String&amp; referrer, bool /*allowsScrolling*/, int /*marginWidth*/, int /*marginHeight*/)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;Frame&gt; result = createFrame(url, name, ownerElement, referrer);
-    if (!result)
-        return nullptr;
-    return result;
-}
-
-RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; URL, const String&amp; name, HTMLFrameOwnerElement* ownerElement, const String&amp; referrer)
-{
</del><span class="cx">     Frame* coreFrame = core(m_webFrame);
</span><span class="cx">     ASSERT(coreFrame);
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;WebFrame&gt; webFrame(AdoptCOM, WebFrame::createInstance());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Frame&gt; childFrame = webFrame-&gt;createSubframeWithOwnerElement(m_webFrame-&gt;webView(), coreFrame-&gt;page(), ownerElement);
</del><ins>+    RefPtr&lt;Frame&gt; childFrame = webFrame-&gt;createSubframeWithOwnerElement(m_webFrame-&gt;webView(), coreFrame-&gt;page(), &amp;ownerElement);
</ins><span class="cx"> 
</span><span class="cx">     childFrame-&gt;tree().setName(name);
</span><span class="cx">     coreFrame-&gt;tree().appendChild(childFrame);
</span><span class="cx">     childFrame-&gt;init();
</span><span class="cx"> 
</span><del>-    coreFrame-&gt;loader().loadURLIntoChildFrame(URL, referrer, childFrame.get());
</del><ins>+    coreFrame-&gt;loader().loadURLIntoChildFrame(url, referrer, childFrame.get());
</ins><span class="cx"> 
</span><span class="cx">     // The frame's onload handler may have removed it from the document.
</span><span class="cx">     if (!childFrame-&gt;tree().parent())
</span><span class="lines">@@ -1130,7 +1122,7 @@
</span><span class="cx">     resourceLoadDelegate-&gt;plugInFailedWithError(webView, error.get(), getWebDataSource(frame-&gt;loader().documentLoader()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp; pluginSize, HTMLPlugInElement* element, const URL&amp; url, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; mimeType, bool loadManually)
</del><ins>+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp; pluginSize, HTMLPlugInElement&amp; element, const URL&amp; url, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; mimeType, bool loadManually)
</ins><span class="cx"> {
</span><span class="cx">     WebView* webView = m_webFrame-&gt;webView();
</span><span class="cx"> 
</span><span class="lines">@@ -1144,7 +1136,7 @@
</span><span class="cx">             for (unsigned i = 0; i &lt; paramNames.size(); i++) 
</span><span class="cx">                 viewArguments.set(paramNames[i], paramValues[i]);
</span><span class="cx">             COMPtr&lt;IPropertyBag&gt; viewArgumentsBag(AdoptCOM, COMPropertyBag&lt;String&gt;::adopt(viewArguments));
</span><del>-            COMPtr&lt;IDOMElement&gt; containingElement(AdoptCOM, DOMElement::createInstance(element));
</del><ins>+            COMPtr&lt;IDOMElement&gt; containingElement(AdoptCOM, DOMElement::createInstance(&amp;element));
</ins><span class="cx"> 
</span><span class="cx">             HashMap&lt;String, COMVariant&gt; arguments;
</span><span class="cx"> 
</span><span class="lines">@@ -1162,13 +1154,13 @@
</span><span class="cx">                 HRESULT hr = webView-&gt;viewWindow(&amp;parentWindow);
</span><span class="cx">                 ASSERT(SUCCEEDED(hr));
</span><span class="cx"> 
</span><del>-                return EmbeddedWidget::create(view.get(), element, parentWindow, pluginSize);
</del><ins>+                return EmbeddedWidget::create(view.get(), &amp;element, parentWindow, pluginSize);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Frame* frame = core(m_webFrame);
</span><del>-    RefPtr&lt;PluginView&gt; pluginView = PluginView::create(frame, pluginSize, element, url, paramNames, paramValues, mimeType, loadManually);
</del><ins>+    RefPtr&lt;PluginView&gt; pluginView = PluginView::create(frame, pluginSize, &amp;element, url, paramNames, paramValues, mimeType, loadManually);
</ins><span class="cx"> 
</span><span class="cx">     if (pluginView-&gt;status() == PluginStatusLoadedSuccessfully)
</span><span class="cx">         return pluginView;
</span><span class="lines">@@ -1187,18 +1179,18 @@
</span><span class="cx">         m_manualLoader = static_cast&lt;EmbeddedWidget*&gt;(pluginWidget);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; pluginSize, HTMLAppletElement* element, const URL&amp; /*baseURL*/, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</del><ins>+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; pluginSize, HTMLAppletElement&amp; element, const URL&amp; /*baseURL*/, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;PluginView&gt; pluginView = PluginView::create(core(m_webFrame), pluginSize, element, URL(), paramNames, paramValues, &quot;application/x-java-applet&quot;, false);
</del><ins>+    RefPtr&lt;PluginView&gt; pluginView = PluginView::create(core(m_webFrame), pluginSize, &amp;element, URL(), paramNames, paramValues, &quot;application/x-java-applet&quot;, false);
</ins><span class="cx"> 
</span><span class="cx">     // Check if the plugin can be loaded successfully
</span><span class="cx">     if (pluginView-&gt;plugin() &amp;&amp; pluginView-&gt;plugin()-&gt;load())
</span><del>-        return pluginView;
</del><ins>+        return WTFMove(pluginView);
</ins><span class="cx"> 
</span><span class="cx">     WebView* webView = m_webFrame-&gt;webView();
</span><span class="cx">     COMPtr&lt;IWebResourceLoadDelegate&gt; resourceLoadDelegate;
</span><span class="cx">     if (FAILED(webView-&gt;resourceLoadDelegate(&amp;resourceLoadDelegate)))
</span><del>-        return pluginView;
</del><ins>+        return WTFMove(pluginView);
</ins><span class="cx"> 
</span><span class="cx">     COMPtr&lt;CFDictionaryPropertyBag&gt; userInfoBag = CFDictionaryPropertyBag::createInstance();
</span><span class="cx"> 
</span><span class="lines">@@ -1210,7 +1202,7 @@
</span><span class="cx"> 
</span><span class="cx">     resourceLoadDelegate-&gt;plugInFailedWithError(webView, error.get(), getWebDataSource(coreFrame-&gt;loader().documentLoader()));
</span><span class="cx"> 
</span><del>-    return pluginView;
</del><ins>+    return WTFMove(pluginView);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebHistory* WebFrameLoaderClient::webHistory() const
</span><span class="lines">@@ -1260,7 +1252,7 @@
</span><span class="cx">     m_webFrame-&gt;webView()-&gt;registerForIconNotification(listen);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</del><ins>+Ref&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</ins><span class="cx"> {
</span><span class="cx">     return WebFrameNetworkingContext::create(core(m_webFrame));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -49,10 +49,12 @@
</span><span class="cx">     void setWebFrame(WebFrame* webFrame) { m_webFrame = webFrame; }
</span><span class="cx">     WebFrame* webFrame() const { return m_webFrame; }
</span><span class="cx"> 
</span><del>-    virtual bool hasWebView() const;
</del><ins>+    void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
</ins><span class="cx"> 
</span><del>-    virtual PassRefPtr&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext();
</del><ins>+    bool hasWebView() const override;
</ins><span class="cx"> 
</span><ins>+    Ref&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext() override;
+
</ins><span class="cx">     void frameLoaderDestroyed() override;
</span><span class="cx">     void makeRepresentation(WebCore::DocumentLoader*) override;
</span><span class="cx">     void forceLayoutForNonHTML() override;
</span><span class="lines">@@ -63,7 +65,7 @@
</span><span class="cx">     void detachedFromParent3() override;
</span><span class="cx"> 
</span><span class="cx">     void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;) override;
</span><del>-    virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;);
</del><ins>+    void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse) override;
</span><span class="cx">     bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
</span><span class="lines">@@ -72,7 +74,7 @@
</span><span class="cx">     void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
</span><span class="cx">     void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
</span><span class="cx">     void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&amp;) override;
</span><del>-    virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;, const unsigned char* data, unsigned long long length);
</del><ins>+    bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;, const unsigned char* data, unsigned long long length) override;
</ins><span class="cx"> 
</span><span class="cx">     void dispatchDidDispatchOnloadEvents() override;
</span><span class="cx">     void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
</span><span class="lines">@@ -94,14 +96,14 @@
</span><span class="cx">     void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) override;
</span><span class="cx"> 
</span><span class="cx">     void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, WebCore::FramePolicyFunction) override;
</span><del>-    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, const WTF::String&amp; frameName, WebCore::FramePolicyFunction) override;
-    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
</del><ins>+    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, const WTF::String&amp; frameName, WebCore::FramePolicyFunction) override;
+    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, WebCore::FramePolicyFunction) override;
</ins><span class="cx">     void cancelPolicyCheck() override;
</span><span class="cx"> 
</span><span class="cx">     void dispatchUnableToImplementPolicy(const WebCore::ResourceError&amp;) override;
</span><span class="cx"> 
</span><del>-    void dispatchWillSendSubmitEvent(PassRefPtr&lt;WebCore::FormState&gt;) override;
-    void dispatchWillSubmitForm(PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
</del><ins>+    void dispatchWillSendSubmitEvent(Ref&lt;WebCore::FormState&gt;&amp;&amp;) override;
+    void dispatchWillSubmitForm(WebCore::FormState&amp;, WebCore::FramePolicyFunction) override;
</ins><span class="cx"> 
</span><span class="cx">     void revertToProvisionalState(WebCore::DocumentLoader*) override;
</span><span class="cx">     bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;, int length) override;
</span><span class="lines">@@ -114,9 +116,9 @@
</span><span class="cx"> 
</span><span class="cx">     void startDownload(const WebCore::ResourceRequest&amp;, const String&amp; suggestedName = String()) override;
</span><span class="cx"> 
</span><del>-    virtual void progressStarted(WebCore::Frame&amp;);
-    virtual void progressEstimateChanged(WebCore::Frame&amp;);
-    virtual void progressFinished(WebCore::Frame&amp;);
</del><ins>+    void progressStarted(WebCore::Frame&amp;) override;
+    void progressEstimateChanged(WebCore::Frame&amp;) override;
+    void progressFinished(WebCore::Frame&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
</span><span class="cx">     void finishedLoading(WebCore::DocumentLoader*) override;
</span><span class="lines">@@ -149,10 +151,10 @@
</span><span class="cx"> 
</span><span class="cx">     WTF::String userAgent(const WebCore::URL&amp;) override;
</span><span class="cx"> 
</span><del>-    virtual Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;);
</del><ins>+    Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;) override;
</ins><span class="cx">     void updateCachedDocumentLoader(WebCore::DocumentLoader&amp;) override { }
</span><span class="cx"> 
</span><del>-    virtual void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;);
</del><ins>+    void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
</span><span class="cx">     void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
</span><span class="lines">@@ -176,15 +178,15 @@
</span><span class="cx"> 
</span><span class="cx">     void dispatchDidBecomeFrameset(bool) override;
</span><span class="cx"> 
</span><del>-    virtual bool canCachePage() const;
</del><ins>+    bool canCachePage() const override;
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const WTF::String&amp; name, WebCore::HTMLFrameOwnerElement*,
</del><ins>+    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const WTF::String&amp; name, WebCore::HTMLFrameOwnerElement&amp;,
</ins><span class="cx">         const WTF::String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
</span><del>-    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement*, const WebCore::URL&amp;, const Vector&lt;WTF::String&gt;&amp;, const Vector&lt;WTF::String&gt;&amp;, const WTF::String&amp;, bool loadManually) override;
</del><ins>+    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement&amp;, const WebCore::URL&amp;, const Vector&lt;WTF::String&gt;&amp;, const Vector&lt;WTF::String&gt;&amp;, const WTF::String&amp;, bool loadManually) override;
</ins><span class="cx">     void recreatePlugin(WebCore::Widget*) override { }
</span><span class="cx">     void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement*, const WebCore::URL&amp; baseURL, const Vector&lt;WTF::String&gt;&amp; paramNames, const Vector&lt;WTF::String&gt;&amp; paramValues) override;
</del><ins>+    RefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement&amp;, const WebCore::URL&amp; baseURL, const Vector&lt;WTF::String&gt;&amp; paramNames, const Vector&lt;WTF::String&gt;&amp; paramValues) override;
</ins><span class="cx"> 
</span><span class="cx">     WebCore::ObjectContentType objectContentType(const WebCore::URL&amp;, const WTF::String&amp; mimeType) override;
</span><span class="cx">     WTF::String overrideMediaType() const override;
</span><span class="lines">@@ -196,20 +198,16 @@
</span><span class="cx"> 
</span><span class="cx">     void registerForIconNotification(bool listen) override;
</span><span class="cx"> 
</span><del>-    virtual bool shouldAlwaysUsePluginDocument(const WTF::String&amp; mimeType) const;
</del><ins>+    bool shouldAlwaysUsePluginDocument(const WTF::String&amp; mimeType) const override;
</ins><span class="cx"> 
</span><del>-    virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
-
</del><span class="cx">     void prefetchDNS(const String&amp;) override;
</span><span class="cx"> 
</span><del>-protected:
</del><ins>+private:
+    WebHistory* webHistory() const;
+
</ins><span class="cx">     class WebFramePolicyListenerPrivate;
</span><span class="cx">     std::unique_ptr&lt;WebFramePolicyListenerPrivate&gt; m_policyListenerPrivate;
</span><span class="cx"> 
</span><del>-private:
-    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const WTF::String&amp; name, WebCore::HTMLFrameOwnerElement*, const WTF::String&amp; referrer);
-    WebHistory* webHistory() const;
-
</del><span class="cx">     WebFrame* m_webFrame;
</span><span class="cx"> 
</span><span class="cx">     // Points to the manual loader that data should be redirected to.
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebFrameNetworkingContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext {
</span><span class="cx"> public:
</span><del>-    static PassRefPtr&lt;WebFrameNetworkingContext&gt; create(WebCore::Frame* frame)
</del><ins>+    static Ref&lt;WebFrameNetworkingContext&gt; create(WebCore::Frame* frame)
</ins><span class="cx">     {
</span><del>-        return adoptRef(new WebFrameNetworkingContext(frame));
</del><ins>+        return adoptRef(*new WebFrameNetworkingContext(frame));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if USE(CFURLCONNECTION)
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/ChangeLog        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -1,3 +1,133 @@
</span><ins>+2017-01-15  Darin Adler  &lt;darin@apple.com&gt;
+
+        Remove PassRefPtr from &quot;loader&quot; directory of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=167055
+
+        Reviewed by Alex Christensen.
+
+        * Shared/APIWebArchive.h: Use RefPtr&amp;&amp; instead of PassRefPtr.
+        * Shared/APIWebArchive.mm:
+        (API::WebArchive::create): Ditto.
+        (API::WebArchive::WebArchive): Ditto.
+        (API::WebArchive::subresources): Ditto.
+        (API::WebArchive::subframeArchives): Ditto.
+
+        * Shared/TextCheckerState.h: Initialize data members so classes
+        using this won't have to explicitly initalize them.
+
+        * UIProcess/WebIconDatabase.cpp:
+        (WebKit::WebIconDatabase::setIconDataForIconURL): Pass a raw
+        pointer to WebCore.
+
+        * UIProcess/WebPageProxy.h: Removed forward declaration of
+        StringPairVector, not needed here.
+
+        * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
+        (WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy): Take a reference.
+        (WebKit::WebIconDatabaseProxy::retainIconForPageURL): Updated for reference.
+        (WebKit::WebIconDatabaseProxy::releaseIconForPageURL): Ditto.
+        (WebKit::WebIconDatabaseProxy::synchronousIconForPageURL): Ditto.
+        (WebKit::WebIconDatabaseProxy::loadDecisionForIconURL): Ditto.
+        (WebKit::WebIconDatabaseProxy::receivedIconLoadDecision): Ditto.
+        (WebKit::WebIconDatabaseProxy::iconDataForIconURL): Ditto.
+        (WebKit::WebIconDatabaseProxy::setIconURLForPageURL): Ditto.
+        (WebKit::WebIconDatabaseProxy::setIconDataForIconURL): Ditto.
+        * WebProcess/IconDatabase/WebIconDatabaseProxy.h: Updated for the above.
+        Marked the class final, made most functions private and final.
+
+        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
+        (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
+        Removed assertion that a pointer is non-null since that pointer is now a
+        reference. Left use of PassRefPtr here for now.z
+
+        * WebProcess/Network/WebLoaderStrategy.cpp:
+        (WebKit::WebLoaderStrategy::scheduleLoad): Updated since application cache
+        host is now a reference rather thna a pointer.
+        * WebProcess/Network/WebResourceLoader.cpp:
+        (WebKit::WebResourceLoader::willSendRequest): Ditto.
+        (WebKit::WebResourceLoader::didReceiveResponse): Ditto.
+        (WebKit::WebResourceLoader::didFailResourceLoad): Ditto.
+
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::buildHTTPHeaders): Got rid of unneeded use of String::format.
+        (WebKit::PluginView::create): Take a reference instead of PassRefPtr.
+        (WebKit::PluginView::PluginView): Ditto. Also moved much of the data
+        member initialization to the class definition.
+        (WebKit::PluginView::recreateAndInitialize): Take Ref&amp;&amp; instead of PassRefPtr.
+        (WebKit::PluginView::manualLoadDidReceiveResponse): Updated for change to
+        ManualStreamState enumeration.
+        (WebKit::PluginView::manualLoadDidReceiveData): Ditto.
+        (WebKit::PluginView::manualLoadDidFinishLoading Ditto.):
+        (WebKit::PluginView::manualLoadDidFail): Ditto.
+        (WebKit::PluginView::liveResourceData): Return RefPtr insead of PassRefPtr.
+        (WebKit::PluginView::redeliverManualStream): Updated for ManualStreamState.
+        * WebProcess/Plugins/PluginView.h: Updated for the above. Also changed
+        ManualStreamState into an enum class.
+
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp: Changed m_page to a reference.
+        (WebKit::WebChromeClient::runOpenPanel): Take both arguments as references.
+        * WebProcess/WebCoreSupport/WebChromeClient.h: Updated for the above.
+
+        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
+        (WebKit::WebEditorClient::registerUndoStep): Take reference instead of PassRefPtr.
+        (WebKit::WebEditorClient::registerRedoStep): Ditto.
+        * WebProcess/WebCoreSupport/WebEditorClient.h: Updated for the above
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+        Updated for change to FrameLoaderClient.
+        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
+        (WebKit::WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
+        (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
+        (WebKit::WebFrameLoaderClient::createFrame): Ditto.
+        (WebKit::WebFrameLoaderClient::createPlugin): Ditto.
+        (WebKit::WebFrameLoaderClient::recreatePlugin): Ditto.
+        (WebKit::WebFrameLoaderClient::createJavaAppletWidget): Ditto.
+        (WebKit::WebFrameLoaderClient::createNetworkingContext): Ditto.
+        (WebKit::WebFrameLoaderClient::didRequestAutocomplete): Ditto.
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Updated for the above.
+
+        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
+        (WebKit::WebChromeClient::didReceiveMobileDocType): Updated since m_page is a
+        reference now.
+        (WebKit::WebChromeClient::observedContentChange): Ditto.
+        (WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame): Ditto.
+        (WebKit::WebChromeClient::didLayout): Ditto.
+        (WebKit::WebChromeClient::didStartOverflowScroll): Ditto.
+        (WebKit::WebChromeClient::didEndOverflowScroll): Ditto.
+        (WebKit::WebChromeClient::hasStablePageScaleFactor): Ditto.
+        (WebKit::WebChromeClient::showPlaybackTargetPicker): Ditto.
+        (WebKit::WebChromeClient::eventThrottlingDelay): Ditto.
+        (WebKit::WebChromeClient::deviceOrientation): Ditto.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage): Pass reference.
+        (WebKit::WebPage::createPlugin): Return RefPtr instead of PassRefPtr.
+        (WebKit::WebPage::fromCorePage): Updated for change to WebChromeClient.
+        (WebKit::WebPage::setHeaderPageBanner): Take pointer instead of PassRefPtr.
+        (WebKit::WebPage::setFooterPageBanner): Ditto.
+        (WebKit::WebPage::setActiveOpenPanelResultListener): Take Ref&amp;&amp; instead of
+        PassRefPtr.
+        (WebKit::WebPage::currentSelectionAsRange): Return RefPtr instead of PassRefPtr.
+        (WebKit::WebPage::rangeFromEditingRange): Ditto.
+        * WebProcess/WebPage/WebPage.h: Updated for the above.
+
+        * WebProcess/WebPage/efl/WebPageEfl.cpp:
+        (WebKit::WebPage::cachedResponseDataForURL): Return RefPtr instead of PassRefPtr.
+        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
+        (WebKit::WebPage::cachedResponseDataForURL): Ditto.
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::cachedResponseDataForURL): Ditto.
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        (WebKit::WebPage::cachedResponseDataForURL): Ditto.
+        (WebKit::WebPage::setTopOverhangImage): Take raw pointer instead of PassRefPtr.
+        (WebKit::WebPage::setBottomOverhangImage): Ditto.
+
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::WebProcess): Pass a reference. Move most initialization to
+        the class definition.
+        * WebProcess/WebProcess.h: Updaed for the above.
+
</ins><span class="cx"> 2017-01-17  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r210834
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIWebArchiveh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/APIWebArchive.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/APIWebArchive.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/Shared/APIWebArchive.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;APIObject.h&quot;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="lines">@@ -50,9 +49,9 @@
</span><span class="cx"> public:
</span><span class="cx">     virtual ~WebArchive();
</span><span class="cx"> 
</span><del>-    static Ref&lt;WebArchive&gt; create(WebArchiveResource* mainResource, PassRefPtr&lt;API::Array&gt; subresources, PassRefPtr&lt;API::Array&gt; subframeArchives);
</del><ins>+    static Ref&lt;WebArchive&gt; create(WebArchiveResource* mainResource, RefPtr&lt;API::Array&gt;&amp;&amp; subresources, RefPtr&lt;API::Array&gt;&amp;&amp; subframeArchives);
</ins><span class="cx">     static Ref&lt;WebArchive&gt; create(API::Data*);
</span><del>-    static Ref&lt;WebArchive&gt; create(PassRefPtr&lt;WebCore::LegacyWebArchive&gt;);
</del><ins>+    static Ref&lt;WebArchive&gt; create(RefPtr&lt;WebCore::LegacyWebArchive&gt;&amp;&amp;);
</ins><span class="cx">     static Ref&lt;WebArchive&gt; create(WebCore::Range*);
</span><span class="cx"> 
</span><span class="cx">     WebArchiveResource* mainResource();
</span><span class="lines">@@ -64,9 +63,9 @@
</span><span class="cx">     WebCore::LegacyWebArchive* coreLegacyWebArchive();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    WebArchive(WebArchiveResource* mainResource, PassRefPtr&lt;API::Array&gt; subresources, PassRefPtr&lt;API::Array&gt; subframeArchives);
</del><ins>+    WebArchive(WebArchiveResource* mainResource, RefPtr&lt;API::Array&gt;&amp;&amp; subresources, RefPtr&lt;API::Array&gt;&amp;&amp; subframeArchives);
</ins><span class="cx">     WebArchive(API::Data*);
</span><del>-    WebArchive(PassRefPtr&lt;WebCore::LegacyWebArchive&gt;);
</del><ins>+    WebArchive(RefPtr&lt;WebCore::LegacyWebArchive&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebCore::LegacyWebArchive&gt; m_legacyWebArchive;
</span><span class="cx">     RefPtr&lt;WebArchiveResource&gt; m_cachedMainResource;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIWebArchivemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/APIWebArchive.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/APIWebArchive.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/Shared/APIWebArchive.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><del>-Ref&lt;WebArchive&gt; WebArchive::create(WebArchiveResource* mainResource, PassRefPtr&lt;API::Array&gt; subresources, PassRefPtr&lt;API::Array&gt; subframeArchives)
</del><ins>+Ref&lt;WebArchive&gt; WebArchive::create(WebArchiveResource* mainResource, RefPtr&lt;API::Array&gt;&amp;&amp; subresources, RefPtr&lt;API::Array&gt;&amp;&amp; subframeArchives)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new WebArchive(mainResource, subresources, subframeArchives));
</del><ins>+    return adoptRef(*new WebArchive(mainResource, WTFMove(subresources), WTFMove(subframeArchives)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;WebArchive&gt; WebArchive::create(API::Data* data)
</span><span class="lines">@@ -48,9 +48,9 @@
</span><span class="cx">     return adoptRef(*new WebArchive(data));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;WebArchive&gt; WebArchive::create(PassRefPtr&lt;LegacyWebArchive&gt; legacyWebArchive)
</del><ins>+Ref&lt;WebArchive&gt; WebArchive::create(RefPtr&lt;LegacyWebArchive&gt;&amp;&amp; legacyWebArchive)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new WebArchive(legacyWebArchive));
</del><ins>+    return adoptRef(*new WebArchive(legacyWebArchive.releaseNonNull()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;WebArchive&gt; WebArchive::create(Range* range)
</span><span class="lines">@@ -58,31 +58,32 @@
</span><span class="cx">     return adoptRef(*new WebArchive(LegacyWebArchive::create(range)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WebArchive::WebArchive(WebArchiveResource* mainResource, PassRefPtr&lt;API::Array&gt; subresources, PassRefPtr&lt;API::Array&gt; subframeArchives)
</del><ins>+WebArchive::WebArchive(WebArchiveResource* mainResource, RefPtr&lt;API::Array&gt;&amp;&amp; subresources, RefPtr&lt;API::Array&gt;&amp;&amp; subframeArchives)
</ins><span class="cx">     : m_cachedMainResource(mainResource)
</span><span class="cx">     , m_cachedSubresources(subresources)
</span><span class="cx">     , m_cachedSubframeArchives(subframeArchives)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;ArchiveResource&gt; coreMainResource = m_cachedMainResource-&gt;coreArchiveResource();
</del><ins>+    auto coreMainResource = m_cachedMainResource-&gt;coreArchiveResource();
</ins><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; coreArchiveResources;
</del><ins>+    Vector&lt;Ref&lt;ArchiveResource&gt;&gt; coreArchiveResources;
</ins><span class="cx">     coreArchiveResources.reserveInitialCapacity(m_cachedSubresources-&gt;size());
</span><span class="cx">     for (size_t i = 0; i &lt; m_cachedSubresources-&gt;size(); ++i) {
</span><del>-        RefPtr&lt;WebArchiveResource&gt; resource = m_cachedSubresources-&gt;at&lt;WebArchiveResource&gt;(i);
</del><ins>+        auto resource = m_cachedSubresources-&gt;at&lt;WebArchiveResource&gt;(i);
</ins><span class="cx">         ASSERT(resource);
</span><del>-        coreArchiveResources.uncheckedAppend(resource-&gt;coreArchiveResource());
</del><ins>+        ASSERT(resource-&gt;coreArchiveResource());
+        coreArchiveResources.uncheckedAppend(*resource-&gt;coreArchiveResource());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;RefPtr&lt;LegacyWebArchive&gt;&gt; coreSubframeLegacyWebArchives;
</del><ins>+    Vector&lt;Ref&lt;LegacyWebArchive&gt;&gt; coreSubframeLegacyWebArchives;
</ins><span class="cx">     coreSubframeLegacyWebArchives.reserveInitialCapacity(m_cachedSubframeArchives-&gt;size());
</span><del>-
</del><span class="cx">     for (size_t i = 0; i &lt; m_cachedSubframeArchives-&gt;size(); ++i) {
</span><del>-        RefPtr&lt;WebArchive&gt; subframeWebArchive = m_cachedSubframeArchives-&gt;at&lt;WebArchive&gt;(i);
</del><ins>+        auto subframeWebArchive = m_cachedSubframeArchives-&gt;at&lt;WebArchive&gt;(i);
</ins><span class="cx">         ASSERT(subframeWebArchive);
</span><del>-        coreSubframeLegacyWebArchives.uncheckedAppend(subframeWebArchive-&gt;coreLegacyWebArchive());
</del><ins>+        ASSERT(subframeWebArchive-&gt;coreLegacyWebArchive());
+        coreSubframeLegacyWebArchives.uncheckedAppend(*subframeWebArchive-&gt;coreLegacyWebArchive());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_legacyWebArchive = LegacyWebArchive::create(WTFMove(coreMainResource), WTFMove(coreArchiveResources), WTFMove(coreSubframeLegacyWebArchives));
</del><ins>+    m_legacyWebArchive = LegacyWebArchive::create(*coreMainResource, WTFMove(coreArchiveResources), WTFMove(coreSubframeLegacyWebArchives));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebArchive::WebArchive(API::Data* data)
</span><span class="lines">@@ -90,7 +91,7 @@
</span><span class="cx">     m_legacyWebArchive = LegacyWebArchive::create(SharedBuffer::create(data-&gt;bytes(), data-&gt;size()).get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WebArchive::WebArchive(PassRefPtr&lt;LegacyWebArchive&gt; legacyWebArchive)
</del><ins>+WebArchive::WebArchive(RefPtr&lt;LegacyWebArchive&gt;&amp;&amp; legacyWebArchive)
</ins><span class="cx">     : m_legacyWebArchive(legacyWebArchive)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -111,10 +112,8 @@
</span><span class="cx">     if (!m_cachedSubresources) {
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; subresources;
</span><span class="cx">         subresources.reserveInitialCapacity(m_legacyWebArchive-&gt;subresources().size());
</span><del>-
-        for (const auto&amp; subresource : m_legacyWebArchive-&gt;subresources())
-            subresources.uncheckedAppend(WebArchiveResource::create(subresource));
-
</del><ins>+        for (auto&amp; subresource : m_legacyWebArchive-&gt;subresources())
+            subresources.uncheckedAppend(WebArchiveResource::create(subresource.ptr()));
</ins><span class="cx">         m_cachedSubresources = API::Array::create(WTFMove(subresources));
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -126,10 +125,8 @@
</span><span class="cx">     if (!m_cachedSubframeArchives) {
</span><span class="cx">         Vector&lt;RefPtr&lt;API::Object&gt;&gt; subframeWebArchives;
</span><span class="cx">         subframeWebArchives.reserveInitialCapacity(m_legacyWebArchive-&gt;subframeArchives().size());
</span><del>-
-        for (const auto&amp; subframeArchive : m_legacyWebArchive-&gt;subframeArchives())
-            subframeWebArchives.uncheckedAppend(WebArchive::create(static_cast&lt;LegacyWebArchive*&gt;(subframeArchive.get())));
-
</del><ins>+        for (auto&amp; subframeArchive : m_legacyWebArchive-&gt;subframeArchives())
+            subframeWebArchives.uncheckedAppend(WebArchive::create(static_cast&lt;LegacyWebArchive*&gt;(subframeArchive.ptr())));
</ins><span class="cx">         m_cachedSubframeArchives = API::Array::create(WTFMove(subframeWebArchives));
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedTextCheckerStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/TextCheckerState.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/TextCheckerState.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/Shared/TextCheckerState.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef TextCheckerState_h
-#define TextCheckerState_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;ArgumentCoders.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -31,15 +30,15 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> struct TextCheckerState {
</span><del>-    bool isContinuousSpellCheckingEnabled;
-    bool isGrammarCheckingEnabled;
</del><ins>+    bool isContinuousSpellCheckingEnabled { false };
+    bool isGrammarCheckingEnabled { false };
</ins><span class="cx"> 
</span><span class="cx"> #if USE(APPKIT)
</span><del>-    bool isAutomaticSpellingCorrectionEnabled;
-    bool isAutomaticQuoteSubstitutionEnabled;
-    bool isAutomaticDashSubstitutionEnabled;
-    bool isAutomaticLinkDetectionEnabled;
-    bool isAutomaticTextReplacementEnabled;
</del><ins>+    bool isAutomaticSpellingCorrectionEnabled { false };
+    bool isAutomaticQuoteSubstitutionEnabled { false };
+    bool isAutomaticDashSubstitutionEnabled { false };
+    bool isAutomaticLinkDetectionEnabled { false };
+    bool isAutomaticTextReplacementEnabled { false };
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -48,5 +47,3 @@
</span><span class="cx"> namespace IPC {
</span><span class="cx"> template&lt;&gt; struct ArgumentCoder&lt;WebKit::TextCheckerState&gt; : SimpleArgumentCoder&lt;WebKit::TextCheckerState&gt; { };
</span><span class="cx"> };
</span><del>-
-#endif // TextCheckerState_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebIconDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebIconDatabase.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebIconDatabase.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/UIProcess/WebIconDatabase.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     LOG(IconDatabase, &quot;WK2 UIProcess setting icon data (%i bytes) for page URL %s&quot;, (int)iconData.size(), iconURL.ascii().data());
</span><span class="cx">     if (!m_iconDatabaseImpl)
</span><span class="cx">         return;
</span><del>-    m_iconDatabaseImpl-&gt;setIconDataForIconURL(SharedBuffer::create(iconData.data(), iconData.size()), iconURL);
</del><ins>+    m_iconDatabaseImpl-&gt;setIconDataForIconURL(SharedBuffer::create(iconData.data(), iconData.size()).ptr(), iconURL);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabase::synchronousIconDataForPageURL(const String&amp;, IPC::DataReference&amp; iconData)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -186,7 +186,6 @@
</span><span class="cx"> class RemoteLayerTreeScrollingPerformanceData;
</span><span class="cx"> class RemoteLayerTreeTransaction;
</span><span class="cx"> class RemoteScrollingCoordinatorProxy;
</span><del>-class StringPairVector;
</del><span class="cx"> class UserData;
</span><span class="cx"> class ViewSnapshot;
</span><span class="cx"> class VisitedLinkStore;
</span><span class="lines">@@ -206,11 +205,12 @@
</span><span class="cx"> class WebUserContentControllerProxy;
</span><span class="cx"> class WebWheelEvent;
</span><span class="cx"> class WebsiteDataStore;
</span><ins>+class GamepadData;
+
</ins><span class="cx"> struct AttributedString;
</span><span class="cx"> struct ColorSpaceData;
</span><span class="cx"> struct EditingRange;
</span><span class="cx"> struct EditorState;
</span><del>-class GamepadData;
</del><span class="cx"> struct InteractionInformationRequest;
</span><span class="cx"> struct LoadParameters;
</span><span class="cx"> struct PlatformPopupMenuData;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -42,11 +42,10 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WebIconDatabaseProxy::WebIconDatabaseProxy(WebProcess* process)
-    : m_isEnabled(false)
-    , m_process(process)
</del><ins>+WebIconDatabaseProxy::WebIconDatabaseProxy(WebProcess&amp; process)
+    : m_process(process)
</ins><span class="cx"> {
</span><del>-    m_process-&gt;addMessageReceiver(Messages::WebIconDatabaseProxy::messageReceiverName(), *this);
</del><ins>+    m_process.addMessageReceiver(Messages::WebIconDatabaseProxy::messageReceiverName(), *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebIconDatabaseProxy::isEnabled() const
</span><span class="lines">@@ -65,18 +64,18 @@
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabaseProxy::retainIconForPageURL(const String&amp; pageURL)
</span><span class="cx"> {
</span><del>-    m_process-&gt;parentProcessConnection()-&gt;send(Messages::WebProcessProxy::RetainIconForPageURL(pageURL), 0);
</del><ins>+    m_process.parentProcessConnection()-&gt;send(Messages::WebProcessProxy::RetainIconForPageURL(pageURL), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabaseProxy::releaseIconForPageURL(const String&amp; pageURL)
</span><span class="cx"> {
</span><del>-    m_process-&gt;parentProcessConnection()-&gt;send(Messages::WebProcessProxy::ReleaseIconForPageURL(pageURL), 0);
</del><ins>+    m_process.parentProcessConnection()-&gt;send(Messages::WebProcessProxy::ReleaseIconForPageURL(pageURL), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Image* WebIconDatabaseProxy::synchronousIconForPageURL(const String&amp; pageURL, const IntSize&amp; /*size*/)
</span><span class="cx"> {
</span><span class="cx">     IPC::DataReference result;
</span><del>-    if (!m_process-&gt;parentProcessConnection()-&gt;sendSync(Messages::WebIconDatabase::SynchronousIconDataForPageURL(pageURL), Messages::WebIconDatabase::SynchronousIconDataForPageURL::Reply(result), 0))
</del><ins>+    if (!m_process.parentProcessConnection()-&gt;sendSync(Messages::WebIconDatabase::SynchronousIconDataForPageURL(pageURL), Messages::WebIconDatabase::SynchronousIconDataForPageURL::Reply(result), 0))
</ins><span class="cx">         return 0;
</span><span class="cx">     
</span><span class="cx">     // FIXME: Return Image created with the above data.
</span><span class="lines">@@ -110,34 +109,32 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebIconDatabaseProxy::loadDecisionForIconURL(const String&amp; iconURL, PassRefPtr&lt;WebCore::IconLoadDecisionCallback&gt; callback)
</del><ins>+void WebIconDatabaseProxy::loadDecisionForIconURL(const String&amp; iconURL, WebCore::IconLoadDecisionCallback&amp; callback)
</ins><span class="cx"> {
</span><del>-    uint64_t id = callback-&gt;callbackID();
-    m_iconLoadDecisionCallbacks.add(id, callback);
-    
-    m_process-&gt;parentProcessConnection()-&gt;send(Messages::WebIconDatabase::GetLoadDecisionForIconURL(iconURL, id), 0);
</del><ins>+    uint64_t id = callback.callbackID();
+    m_iconLoadDecisionCallbacks.add(id, &amp;callback);
+    m_process.parentProcessConnection()-&gt;send(Messages::WebIconDatabase::GetLoadDecisionForIconURL(iconURL, id), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabaseProxy::receivedIconLoadDecision(int decision, uint64_t callbackID)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebCore::IconLoadDecisionCallback&gt; callback = m_iconLoadDecisionCallbacks.take(callbackID);
-    if (callback)
</del><ins>+    if (auto callback = m_iconLoadDecisionCallbacks.take(callbackID))
</ins><span class="cx">         callback-&gt;performCallback(static_cast&lt;WebCore::IconLoadDecision&gt;(decision));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebIconDatabaseProxy::iconDataForIconURL(const String&amp; /*iconURL*/, PassRefPtr&lt;WebCore::IconDataCallback&gt;)
</del><ins>+void WebIconDatabaseProxy::iconDataForIconURL(const String&amp;, WebCore::IconDataCallback&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabaseProxy::setIconURLForPageURL(const String&amp; iconURL, const String&amp; pageURL)
</span><span class="cx"> {
</span><del>-    m_process-&gt;parentProcessConnection()-&gt;send(Messages::WebIconDatabase::SetIconURLForPageURL(iconURL, pageURL), 0);
</del><ins>+    m_process.parentProcessConnection()-&gt;send(Messages::WebIconDatabase::SetIconURLForPageURL(iconURL, pageURL), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebIconDatabaseProxy::setIconDataForIconURL(PassRefPtr&lt;SharedBuffer&gt; iconData, const String&amp; iconURL)
</del><ins>+void WebIconDatabaseProxy::setIconDataForIconURL(SharedBuffer* iconData, const String&amp; iconURL)
</ins><span class="cx"> {
</span><del>-    IPC::DataReference data(reinterpret_cast&lt;const uint8_t*&gt;(iconData ? iconData-&gt;data() : 0), iconData ? iconData-&gt;size() : 0);
-    m_process-&gt;parentProcessConnection()-&gt;send(Messages::WebIconDatabase::SetIconDataForIconURL(data, iconURL), 0);
</del><ins>+    IPC::DataReference data(reinterpret_cast&lt;const uint8_t*&gt;(iconData ? iconData-&gt;data() : nullptr), iconData ? iconData-&gt;size() : 0);
+    m_process.parentProcessConnection()-&gt;send(Messages::WebIconDatabase::SetIconDataForIconURL(data, iconURL), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebIconDatabaseProxy::urlImportFinished()
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessIconDatabaseWebIconDatabaseProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WebIconDatabaseProxy_h
-#define WebIconDatabaseProxy_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;APIObject.h&quot;
</span><span class="cx"> #include &quot;MessageReceiver.h&quot;
</span><span class="lines">@@ -37,43 +36,41 @@
</span><span class="cx"> 
</span><span class="cx"> class WebProcess;
</span><span class="cx"> 
</span><del>-class WebIconDatabaseProxy : public WebCore::IconDatabaseBase, private IPC::MessageReceiver {
</del><ins>+class WebIconDatabaseProxy final : public WebCore::IconDatabaseBase, private IPC::MessageReceiver {
</ins><span class="cx"> public:
</span><del>-    explicit WebIconDatabaseProxy(WebProcess*);
</del><ins>+    explicit WebIconDatabaseProxy(WebProcess&amp;);
</ins><span class="cx">     virtual ~WebIconDatabaseProxy();
</span><span class="cx"> 
</span><del>-    bool isEnabled() const override;
-    void setEnabled(bool) override;
</del><ins>+    void setEnabled(bool) final;
</ins><span class="cx"> 
</span><del>-    void retainIconForPageURL(const String&amp;) override;
-    void releaseIconForPageURL(const String&amp;) override;
-    void setIconURLForPageURL(const String&amp;, const String&amp;) override;
-    void setIconDataForIconURL(PassRefPtr&lt;WebCore::SharedBuffer&gt;, const String&amp;) override;
</del><ins>+private:
+    bool isEnabled() const final;
</ins><span class="cx"> 
</span><del>-    String synchronousIconURLForPageURL(const String&amp;) override;
-    bool synchronousIconDataKnownForIconURL(const String&amp;) override;
-    WebCore::IconLoadDecision synchronousLoadDecisionForIconURL(const String&amp;, WebCore::DocumentLoader*) override;
-    WebCore::Image* synchronousIconForPageURL(const String&amp;, const WebCore::IntSize&amp;) override;
</del><ins>+    void retainIconForPageURL(const String&amp;) final;
+    void releaseIconForPageURL(const String&amp;) final;
+    void setIconURLForPageURL(const String&amp;, const String&amp;) final;
+    void setIconDataForIconURL(WebCore::SharedBuffer*, const String&amp;) final;
+
+    String synchronousIconURLForPageURL(const String&amp;) final;
+    bool synchronousIconDataKnownForIconURL(const String&amp;) final;
+    WebCore::IconLoadDecision synchronousLoadDecisionForIconURL(const String&amp;, WebCore::DocumentLoader*) final;
+    WebCore::Image* synchronousIconForPageURL(const String&amp;, const WebCore::IntSize&amp;) final;
</ins><span class="cx">     
</span><del>-    // Asynchronous calls we should use to replace the above when supported.
-    bool supportsAsynchronousMode() override;
-    void loadDecisionForIconURL(const String&amp;, PassRefPtr&lt;WebCore::IconLoadDecisionCallback&gt;) override;
</del><ins>+    bool supportsAsynchronousMode() final;
+    void loadDecisionForIconURL(const String&amp;, WebCore::IconLoadDecisionCallback&amp;) final;
</ins><span class="cx">     void receivedIconLoadDecision(int decision, uint64_t callbackID);
</span><del>-    void iconDataForIconURL(const String&amp;, PassRefPtr&lt;WebCore::IconDataCallback&gt;) override;
</del><ins>+    void iconDataForIconURL(const String&amp;, WebCore::IconDataCallback&amp;) final;
</ins><span class="cx"> 
</span><del>-private:
</del><span class="cx">     // IPC::MessageReceiver
</span><del>-    void didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) override;
</del><ins>+    void didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) final;
</ins><span class="cx">     
</span><span class="cx">     // Callbacks from the UIProcess
</span><span class="cx">     void urlImportFinished();
</span><span class="cx"> 
</span><del>-    bool m_isEnabled;
-    WebProcess* m_process;
</del><ins>+    bool m_isEnabled { false };
+    WebProcess&amp; m_process;
</ins><span class="cx">     
</span><span class="cx">     HashMap&lt;uint64_t, RefPtr&lt;WebCore::IconLoadDecisionCallback&gt;&gt; m_iconLoadDecisionCallbacks;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><del>-
-#endif // WebIconDatabaseProxy_h
</del></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundleNavigationActioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">     return adoptRef(*new InjectedBundleNavigationAction(frame, action, formState));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InjectedBundleNavigationAction::InjectedBundleNavigationAction(WebFrame* frame, const NavigationAction&amp; navigationAction, PassRefPtr&lt;FormState&gt; prpFormState)
</del><ins>+InjectedBundleNavigationAction::InjectedBundleNavigationAction(WebFrame* frame, const NavigationAction&amp; navigationAction, PassRefPtr&lt;FormState&gt; formState)
</ins><span class="cx">     : m_navigationType(navigationAction.type())
</span><span class="cx">     , m_modifiers(modifiersForNavigationAction(navigationAction))
</span><span class="cx">     , m_mouseButton(WebMouseEvent::NoButton)
</span><span class="lines">@@ -116,11 +116,8 @@
</span><span class="cx">         m_syntheticClickType = syntheticClickTypeForNavigationAction(navigationAction);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;FormState&gt; formState = prpFormState;
-    if (formState) {
-        ASSERT(formState-&gt;form());
-        m_formElement   = InjectedBundleNodeHandle::getOrCreate(formState-&gt;form());
-    }
</del><ins>+    if (formState)
+        m_formElement = InjectedBundleNodeHandle::getOrCreate(formState-&gt;form());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessNetworkWebLoaderStrategycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (resourceLoader.documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadResource(resourceLoader, resourceLoader.request(), resourceLoader.request().url())) {
</del><ins>+    if (resourceLoader.documentLoader()-&gt;applicationCacheHost().maybeLoadResource(resourceLoader, resourceLoader.request(), resourceLoader.request().url())) {
</ins><span class="cx">         LOG(NetworkScheduling, &quot;(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be loaded from application cache.&quot;, resourceLoader.url().string().utf8().data());
</span><span class="cx">         RELEASE_LOG_IF_ALLOWED(resourceLoader, &quot;scheduleLoad: URL will be loaded from application cache (frame = %p, resourceID = %&quot; PRIu64 &quot;)&quot;, resourceLoader.frame(), identifier);
</span><span class="cx">         m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader, trackingParameters));
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessNetworkWebResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebResourceLoader&gt; protectedThis(this);
</span><span class="cx"> 
</span><del>-    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForRedirect(m_coreLoader.get(), proposedRequest, redirectResponse))
</del><ins>+    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForRedirect(m_coreLoader.get(), proposedRequest, redirectResponse))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_coreLoader-&gt;willSendRequest(WTFMove(proposedRequest), redirectResponse, [protectedThis](ResourceRequest&amp;&amp; request) {
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;WebResourceLoader&gt; protect(*this);
</span><span class="cx"> 
</span><del>-    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForResponse(m_coreLoader.get(), response))
</del><ins>+    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForResponse(m_coreLoader.get(), response))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_coreLoader-&gt;didReceiveResponse(response);
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">     LOG(Network, &quot;(WebProcess) WebResourceLoader::didFailResourceLoad for '%s'&quot;, m_coreLoader-&gt;url().string().latin1().data());
</span><span class="cx">     RELEASE_LOG_IF_ALLOWED(&quot;didFailResourceLoad: (pageID = %&quot; PRIu64 &quot;, frameID = %&quot; PRIu64 &quot;, resourceID = %&quot; PRIu64 &quot;)&quot;, m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
</span><span class="cx"> 
</span><del>-    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForError(m_coreLoader.get(), error))
</del><ins>+    if (m_coreLoader-&gt;documentLoader()-&gt;applicationCacheHost().maybeLoadFallbackForError(m_coreLoader.get(), error))
</ins><span class="cx">         return;
</span><span class="cx">     m_coreLoader-&gt;didFail(error);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -185,23 +185,19 @@
</span><span class="cx">     if (!response.isHTTP())
</span><span class="cx">         return String();
</span><span class="cx"> 
</span><del>-    StringBuilder stringBuilder;
-    
-    String statusLine = String::format(&quot;HTTP %d &quot;, response.httpStatusCode());
-    stringBuilder.append(statusLine);
-    stringBuilder.append(response.httpStatusText());
-    stringBuilder.append('\n');
-    
-    HTTPHeaderMap::const_iterator end = response.httpHeaderFields().end();
-    for (HTTPHeaderMap::const_iterator it = response.httpHeaderFields().begin(); it != end; ++it) {
-        stringBuilder.append(it-&gt;key);
-        stringBuilder.appendLiteral(&quot;: &quot;);
-        stringBuilder.append(it-&gt;value);
-        stringBuilder.append('\n');
</del><ins>+    StringBuilder header;
+    header.appendLiteral(&quot;HTTP &quot;);
+    header.appendNumber(response.httpStatusCode());
+    header.append(' ');
+    header.append(response.httpStatusText());
+    header.append('\n');
+    for (auto&amp; field : response.httpHeaderFields()) {
+        header.append(field.key);
+        header.appendLiteral(&quot;: &quot;);
+        header.append(field.value);
+        header.append('\n');
</ins><span class="cx">     }
</span><del>-    
-    String headers = stringBuilder.toString();
-    
</del><ins>+
</ins><span class="cx">     // If the content is encoded (most likely compressed), then don't send its length to the plugin,
</span><span class="cx">     // which is only interested in the decoded length, not yet known at the moment.
</span><span class="cx">     // &lt;rdar://problem/4470599&gt; tracks a request for -[NSURLResponse expectedContentLength] to incorporate this logic.
</span><span class="lines">@@ -209,7 +205,7 @@
</span><span class="cx">     if (!contentEncoding.isNull() &amp;&amp; contentEncoding != &quot;identity&quot;)
</span><span class="cx">         expectedContentLength = -1;
</span><span class="cx"> 
</span><del>-    return headers;
</del><ins>+    return header.toString();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static uint32_t lastModifiedDateMS(const ResourceResponse&amp; response)
</span><span class="lines">@@ -292,37 +288,19 @@
</span><span class="cx">     return webFrame-&gt;page();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;PluginView&gt; PluginView::create(PassRefPtr&lt;HTMLPlugInElement&gt; pluginElement, PassRefPtr&lt;Plugin&gt; plugin, const Plugin::Parameters&amp; parameters)
</del><ins>+Ref&lt;PluginView&gt; PluginView::create(HTMLPlugInElement&amp; pluginElement, Ref&lt;Plugin&gt;&amp;&amp; plugin, const Plugin::Parameters&amp; parameters)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new PluginView(pluginElement, plugin, parameters));
</del><ins>+    return adoptRef(*new PluginView(pluginElement, WTFMove(plugin), parameters));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PluginView::PluginView(PassRefPtr&lt;HTMLPlugInElement&gt; pluginElement, PassRefPtr&lt;Plugin&gt; plugin, const Plugin::Parameters&amp; parameters)
</del><ins>+PluginView::PluginView(HTMLPlugInElement&amp; pluginElement, Ref&lt;Plugin&gt;&amp;&amp; plugin, const Plugin::Parameters&amp; parameters)
</ins><span class="cx">     : PluginViewBase(0)
</span><del>-    , m_pluginElement(pluginElement)
-    , m_plugin(plugin)
</del><ins>+    , m_pluginElement(&amp;pluginElement)
+    , m_plugin(WTFMove(plugin))
</ins><span class="cx">     , m_webPage(webPage(m_pluginElement.get()))
</span><span class="cx">     , m_parameters(parameters)
</span><del>-    , m_isInitialized(false)
-    , m_isWaitingForSynchronousInitialization(false)
-    , m_isWaitingUntilMediaCanStart(false)
-    , m_isBeingDestroyed(false)
-    , m_pluginProcessHasCrashed(false)
-#if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
-    , m_didPlugInStartOffScreen(false)
-#endif
</del><span class="cx">     , m_pendingURLRequestsTimer(RunLoop::main(), this, &amp;PluginView::pendingURLRequestsTimerFired)
</span><del>-#if ENABLE(NETSCAPE_PLUGIN_API)
-    , m_npRuntimeObjectMap(this)
-#endif
-    , m_manualStreamState(StreamStateInitial)
</del><span class="cx">     , m_pluginSnapshotTimer(*this, &amp;PluginView::pluginSnapshotTimerFired, pluginSnapshotTimerDelay)
</span><del>-#if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC) || PLATFORM(COCOA)
-    , m_countSnapshotRetries(0)
-#endif
-    , m_didReceiveUserInteraction(false)
-    , m_pageScaleFactor(1)
-    , m_pluginIsPlayingAudio(false)
</del><span class="cx"> {
</span><span class="cx">     m_webPage-&gt;addPluginView(this);
</span><span class="cx"> }
</span><span class="lines">@@ -374,7 +352,7 @@
</span><span class="cx">     cancelAllStreams();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PluginView::recreateAndInitialize(PassRefPtr&lt;Plugin&gt; plugin)
</del><ins>+void PluginView::recreateAndInitialize(Ref&lt;Plugin&gt;&amp;&amp; plugin)
</ins><span class="cx"> {
</span><span class="cx">     if (m_plugin) {
</span><span class="cx">         if (m_pluginSnapshotTimer.isActive())
</span><span class="lines">@@ -382,13 +360,12 @@
</span><span class="cx">         destroyPluginAndReset();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Reset member variables to initial values.
-    m_plugin = plugin;
</del><ins>+    m_plugin = WTFMove(plugin);
</ins><span class="cx">     m_isInitialized = false;
</span><span class="cx">     m_isWaitingForSynchronousInitialization = false;
</span><span class="cx">     m_isWaitingUntilMediaCanStart = false;
</span><span class="cx">     m_isBeingDestroyed = false;
</span><del>-    m_manualStreamState = StreamStateInitial;
</del><ins>+    m_manualStreamState = ManualStreamState::Initial;
</ins><span class="cx">     m_transientPaintingSnapshot = nullptr;
</span><span class="cx"> 
</span><span class="cx">     initializePlugin();
</span><span class="lines">@@ -421,8 +398,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_isInitialized) {
</span><del>-        ASSERT(m_manualStreamState == StreamStateInitial);
-        m_manualStreamState = StreamStateHasReceivedResponse;
</del><ins>+        ASSERT(m_manualStreamState == ManualStreamState::Initial);
+        m_manualStreamState = ManualStreamState::HasReceivedResponse;
</ins><span class="cx">         m_manualStreamResponse = response;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -448,7 +425,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_isInitialized) {
</span><del>-        ASSERT(m_manualStreamState == StreamStateHasReceivedResponse);
</del><ins>+        ASSERT(m_manualStreamState == ManualStreamState::HasReceivedResponse);
</ins><span class="cx">         if (!m_manualStreamData)
</span><span class="cx">             m_manualStreamData = SharedBuffer::create();
</span><span class="cx"> 
</span><span class="lines">@@ -466,8 +443,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_isInitialized) {
</span><del>-        ASSERT(m_manualStreamState == StreamStateHasReceivedResponse);
-        m_manualStreamState = StreamStateFinished;
</del><ins>+        ASSERT(m_manualStreamState == ManualStreamState::HasReceivedResponse);
+        m_manualStreamState = ManualStreamState::Finished;
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -481,7 +458,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_isInitialized) {
</span><del>-        m_manualStreamState = StreamStateFinished;
</del><ins>+        m_manualStreamState = ManualStreamState::Finished;
</ins><span class="cx">         m_manualStreamError = error;
</span><span class="cx">         m_manualStreamData = nullptr;
</span><span class="cx">         return;
</span><span class="lines">@@ -1007,7 +984,7 @@
</span><span class="cx">     m_plugin-&gt;willDetatchRenderer();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; PluginView::liveResourceData() const
</del><ins>+RefPtr&lt;SharedBuffer&gt; PluginView::liveResourceData() const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_isInitialized || !m_plugin)
</span><span class="cx">         return 0;
</span><span class="lines">@@ -1308,12 +1285,12 @@
</span><span class="cx"> 
</span><span class="cx"> void PluginView::redeliverManualStream()
</span><span class="cx"> {
</span><del>-    if (m_manualStreamState == StreamStateInitial) {
</del><ins>+    if (m_manualStreamState == ManualStreamState::Initial) {
</ins><span class="cx">         // Nothing to do.
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_manualStreamState == StreamStateFailed) {
</del><ins>+    if (m_manualStreamState == ManualStreamState::Failed) {
</ins><span class="cx">         manualLoadDidFail(m_manualStreamError);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -1334,7 +1311,7 @@
</span><span class="cx">         m_manualStreamData = nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_manualStreamState == StreamStateFinished)
</del><ins>+    if (m_manualStreamState == ManualStreamState::Finished)
</ins><span class="cx">         manualLoadDidFinishLoading();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPluginViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -64,9 +64,9 @@
</span><span class="cx"> 
</span><span class="cx"> class PluginView : public WebCore::PluginViewBase, public PluginController, private WebCore::MediaCanStartListener, private WebFrame::LoadListener, private WebCore::MediaProducer {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;PluginView&gt; create(PassRefPtr&lt;WebCore::HTMLPlugInElement&gt;, PassRefPtr&lt;Plugin&gt;, const Plugin::Parameters&amp;);
</del><ins>+    static Ref&lt;PluginView&gt; create(WebCore::HTMLPlugInElement&amp;, Ref&lt;Plugin&gt;&amp;&amp;, const Plugin::Parameters&amp;);
</ins><span class="cx"> 
</span><del>-    void recreateAndInitialize(PassRefPtr&lt;Plugin&gt;);
</del><ins>+    void recreateAndInitialize(Ref&lt;Plugin&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WebCore::Frame* frame() const;
</span><span class="cx"> 
</span><span class="lines">@@ -112,13 +112,13 @@
</span><span class="cx"> 
</span><span class="cx">     bool shouldAllowScripting();
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::SharedBuffer&gt; liveResourceData() const;
</del><ins>+    RefPtr&lt;WebCore::SharedBuffer&gt; liveResourceData() const;
</ins><span class="cx">     bool performDictionaryLookupAtLocation(const WebCore::FloatPoint&amp;);
</span><span class="cx">     String getSelectionForWordAtPoint(const WebCore::FloatPoint&amp;) const;
</span><span class="cx">     bool existingSelectionContainsPoint(const WebCore::FloatPoint&amp;) const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    PluginView(PassRefPtr&lt;WebCore::HTMLPlugInElement&gt;, PassRefPtr&lt;Plugin&gt;, const Plugin::Parameters&amp; parameters);
</del><ins>+    PluginView(WebCore::HTMLPlugInElement&amp;, Ref&lt;Plugin&gt;&amp;&amp;, const Plugin::Parameters&amp;);
</ins><span class="cx">     virtual ~PluginView();
</span><span class="cx"> 
</span><span class="cx">     void initializePlugin();
</span><span class="lines">@@ -244,14 +244,14 @@
</span><span class="cx">     WebPage* m_webPage;
</span><span class="cx">     Plugin::Parameters m_parameters;
</span><span class="cx"> 
</span><del>-    bool m_isInitialized;
-    bool m_isWaitingForSynchronousInitialization;
-    bool m_isWaitingUntilMediaCanStart;
-    bool m_isBeingDestroyed;
-    bool m_pluginProcessHasCrashed;
</del><ins>+    bool m_isInitialized { false };
+    bool m_isWaitingForSynchronousInitialization { false };
+    bool m_isWaitingUntilMediaCanStart { false };
+    bool m_isBeingDestroyed { false };
+    bool m_pluginProcessHasCrashed { false };
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><del>-    bool m_didPlugInStartOffScreen;
</del><ins>+    bool m_didPlugInStartOffScreen { false };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Pending URLRequests that the plug-in has made.
</span><span class="lines">@@ -267,18 +267,13 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     // A map of all related NPObjects for this plug-in view.
</span><del>-    NPRuntimeObjectMap m_npRuntimeObjectMap;
</del><ins>+    NPRuntimeObjectMap m_npRuntimeObjectMap { this };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // The manual stream state. This is used so we can deliver a manual stream to a plug-in
</span><span class="cx">     // when it is initialized.
</span><del>-    enum ManualStreamState {
-        StreamStateInitial,
-        StreamStateHasReceivedResponse,
-        StreamStateFinished,
-        StreamStateFailed
-    };
-    ManualStreamState m_manualStreamState;
</del><ins>+    enum class ManualStreamState { Initial, HasReceivedResponse, Finished, Failed };
+    ManualStreamState m_manualStreamState { ManualStreamState::Initial };
</ins><span class="cx"> 
</span><span class="cx">     WebCore::ResourceResponse m_manualStreamResponse;
</span><span class="cx">     WebCore::ResourceError m_manualStreamError;
</span><span class="lines">@@ -289,13 +284,13 @@
</span><span class="cx">     // This timer is used when plugin snapshotting is enabled, to capture a plugin placeholder.
</span><span class="cx">     WebCore::DeferrableOneShotTimer m_pluginSnapshotTimer;
</span><span class="cx"> #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC) || PLATFORM(COCOA)
</span><del>-    unsigned m_countSnapshotRetries;
</del><ins>+    unsigned m_countSnapshotRetries { 0 };
</ins><span class="cx"> #endif
</span><del>-    bool m_didReceiveUserInteraction;
</del><ins>+    bool m_didReceiveUserInteraction { false };
</ins><span class="cx"> 
</span><del>-    double m_pageScaleFactor;
</del><ins>+    double m_pageScaleFactor { 1 };
</ins><span class="cx"> 
</span><del>-    bool m_pluginIsPlayingAudio;
</del><ins>+    bool m_pluginIsPlayingAudio { false };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -103,20 +103,20 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-static WebFrame* findLargestFrameInFrameSet(WebPage* page)
</del><ins>+static WebFrame* findLargestFrameInFrameSet(WebPage&amp; page)
</ins><span class="cx"> {
</span><span class="cx">     // Approximate what a user could consider a default target frame for application menu operations.
</span><span class="cx"> 
</span><del>-    WebFrame* mainFrame = page-&gt;mainWebFrame();
</del><ins>+    WebFrame* mainFrame = page.mainWebFrame();
</ins><span class="cx">     if (!mainFrame || !mainFrame-&gt;isFrameSet())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><del>-    WebFrame* largestSoFar = 0;
</del><ins>+    WebFrame* largestSoFar = nullptr;
</ins><span class="cx"> 
</span><span class="cx">     Ref&lt;API::Array&gt; frameChildren = mainFrame-&gt;childFrames();
</span><span class="cx">     size_t count = frameChildren-&gt;size();
</span><span class="cx">     for (size_t i = 0; i &lt; count; ++i) {
</span><del>-        WebFrame* childFrame = frameChildren-&gt;at&lt;WebFrame&gt;(i);
</del><ins>+        auto* childFrame = frameChildren-&gt;at&lt;WebFrame&gt;(i);
</ins><span class="cx">         if (!largestSoFar || area(childFrame) &gt; area(largestSoFar))
</span><span class="cx">             largestSoFar = childFrame;
</span><span class="cx">     }
</span><span class="lines">@@ -124,6 +124,15 @@
</span><span class="cx">     return largestSoFar;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WebChromeClient::WebChromeClient(WebPage&amp; page)
+    : m_page(page)
+{
+}
+
+inline WebChromeClient::~WebChromeClient()
+{
+}
+
</ins><span class="cx"> void WebChromeClient::chromeDestroyed()
</span><span class="cx"> {
</span><span class="cx">     delete this;
</span><span class="lines">@@ -131,7 +140,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setWindowRect(const FloatRect&amp; windowFrame)
</span><span class="cx"> {
</span><del>-    m_page-&gt;sendSetWindowFrame(windowFrame);
</del><ins>+    m_page.sendSetWindowFrame(windowFrame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatRect WebChromeClient::windowRect()
</span><span class="lines">@@ -140,13 +149,13 @@
</span><span class="cx">     return FloatRect();
</span><span class="cx"> #else
</span><span class="cx"> #if PLATFORM(MAC)
</span><del>-    if (m_page-&gt;hasCachedWindowFrame())
-        return m_page-&gt;windowFrameInUnflippedScreenCoordinates();
</del><ins>+    if (m_page.hasCachedWindowFrame())
+        return m_page.windowFrameInUnflippedScreenCoordinates();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     FloatRect newWindowFrame;
</span><span class="cx"> 
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetWindowFrame(), Messages::WebPageProxy::GetWindowFrame::Reply(newWindowFrame), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetWindowFrame(), Messages::WebPageProxy::GetWindowFrame::Reply(newWindowFrame), m_page.pageID()))
</ins><span class="cx">         return FloatRect();
</span><span class="cx"> 
</span><span class="cx">     return newWindowFrame;
</span><span class="lines">@@ -155,33 +164,33 @@
</span><span class="cx"> 
</span><span class="cx"> FloatRect WebChromeClient::pageRect()
</span><span class="cx"> {
</span><del>-    return FloatRect(FloatPoint(), m_page-&gt;size());
</del><ins>+    return FloatRect(FloatPoint(), m_page.size());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::focus()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetFocus(true));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetFocus(true));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::unfocus()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetFocus(false));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetFocus(false));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> void WebChromeClient::elementDidFocus(const WebCore::Node* node)
</span><span class="cx"> {
</span><del>-    m_page-&gt;elementDidFocus(const_cast&lt;WebCore::Node*&gt;(node));
</del><ins>+    m_page.elementDidFocus(const_cast&lt;WebCore::Node*&gt;(node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::elementDidBlur(const WebCore::Node* node)
</span><span class="cx"> {
</span><del>-    m_page-&gt;elementDidBlur(const_cast&lt;WebCore::Node*&gt;(node));
</del><ins>+    m_page.elementDidBlur(const_cast&lt;WebCore::Node*&gt;(node));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::makeFirstResponder()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::MakeFirstResponder());
</del><ins>+    m_page.send(Messages::WebPageProxy::MakeFirstResponder());
</ins><span class="cx"> }    
</span><span class="cx"> #endif    
</span><span class="cx"> 
</span><span class="lines">@@ -193,7 +202,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::takeFocus(FocusDirection direction)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::TakeFocus(direction));
</del><ins>+    m_page.send(Messages::WebPageProxy::TakeFocus(direction));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::focusedElementChanged(Element* element)
</span><span class="lines">@@ -207,7 +216,7 @@
</span><span class="cx"> 
</span><span class="cx">     WebFrame* webFrame = WebFrame::fromCoreFrame(*element-&gt;document().frame());
</span><span class="cx">     ASSERT(webFrame);
</span><del>-    m_page-&gt;injectedBundleFormClient().didFocusTextField(m_page, &amp;inputElement, webFrame);
</del><ins>+    m_page.injectedBundleFormClient().didFocusTextField(&amp;m_page, &amp;inputElement, webFrame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::focusedFrameChanged(Frame* frame)
</span><span class="lines">@@ -214,7 +223,7 @@
</span><span class="cx"> {
</span><span class="cx">     WebFrame* webFrame = frame ? WebFrame::fromCoreFrame(*frame) : nullptr;
</span><span class="cx"> 
</span><del>-    WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebPageProxy::FocusedFrameChanged(webFrame ? webFrame-&gt;frameID() : 0), m_page-&gt;pageID());
</del><ins>+    WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebPageProxy::FocusedFrameChanged(webFrame ? webFrame-&gt;frameID() : 0), m_page.pageID());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Page* WebChromeClient::createWindow(Frame* frame, const FrameLoadRequest&amp; request, const WindowFeatures&amp; windowFeatures, const NavigationAction&amp; navigationAction)
</span><span class="lines">@@ -234,13 +243,13 @@
</span><span class="cx">     navigationActionData.mouseButton = InjectedBundleNavigationAction::mouseButtonForNavigationAction(navigationAction);
</span><span class="cx">     navigationActionData.syntheticClickType = InjectedBundleNavigationAction::syntheticClickTypeForNavigationAction(navigationAction);
</span><span class="cx">     navigationActionData.userGestureTokenIdentifier = webProcess.userGestureTokenIdentifier(navigationAction.userGestureToken());
</span><del>-    navigationActionData.canHandleRequest = m_page-&gt;canHandleRequest(request.resourceRequest());
</del><ins>+    navigationActionData.canHandleRequest = m_page.canHandleRequest(request.resourceRequest());
</ins><span class="cx">     navigationActionData.shouldOpenExternalURLsPolicy = navigationAction.shouldOpenExternalURLsPolicy();
</span><span class="cx">     navigationActionData.downloadAttribute = navigationAction.downloadAttribute();
</span><span class="cx"> 
</span><span class="cx">     uint64_t newPageID = 0;
</span><span class="cx">     WebPageCreationParameters parameters;
</span><del>-    if (!webProcess.parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::CreateNewPage(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), request.resourceRequest(), windowFeatures, navigationActionData), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page-&gt;pageID()))
</del><ins>+    if (!webProcess.parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::CreateNewPage(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), request.resourceRequest(), windowFeatures, navigationActionData), Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters), m_page.pageID()))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (!newPageID)
</span><span class="lines">@@ -252,32 +261,32 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::show()
</span><span class="cx"> {
</span><del>-    m_page-&gt;show();
</del><ins>+    m_page.show();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::canRunModal()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;canRunModal();
</del><ins>+    return m_page.canRunModal();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::runModal()
</span><span class="cx"> {
</span><del>-    m_page-&gt;runModal();
</del><ins>+    m_page.runModal();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setToolbarsVisible(bool toolbarsAreVisible)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetToolbarsAreVisible(toolbarsAreVisible));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetToolbarsAreVisible(toolbarsAreVisible));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::toolbarsVisible()
</span><span class="cx"> {
</span><del>-    API::InjectedBundle::PageUIClient::UIElementVisibility toolbarsVisibility = m_page-&gt;injectedBundleUIClient().toolbarsAreVisible(m_page);
</del><ins>+    API::InjectedBundle::PageUIClient::UIElementVisibility toolbarsVisibility = m_page.injectedBundleUIClient().toolbarsAreVisible(&amp;m_page);
</ins><span class="cx">     if (toolbarsVisibility != API::InjectedBundle::PageUIClient::UIElementVisibility::Unknown)
</span><span class="cx">         return toolbarsVisibility == API::InjectedBundle::PageUIClient::UIElementVisibility::Visible;
</span><span class="cx">     
</span><span class="cx">     bool toolbarsAreVisible = true;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetToolbarsAreVisible(), Messages::WebPageProxy::GetToolbarsAreVisible::Reply(toolbarsAreVisible), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetToolbarsAreVisible(), Messages::WebPageProxy::GetToolbarsAreVisible::Reply(toolbarsAreVisible), m_page.pageID()))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     return toolbarsAreVisible;
</span><span class="lines">@@ -285,17 +294,17 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setStatusbarVisible(bool statusBarIsVisible)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetStatusBarIsVisible(statusBarIsVisible));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetStatusBarIsVisible(statusBarIsVisible));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::statusbarVisible()
</span><span class="cx"> {
</span><del>-    API::InjectedBundle::PageUIClient::UIElementVisibility statusbarVisibility = m_page-&gt;injectedBundleUIClient().statusBarIsVisible(m_page);
</del><ins>+    API::InjectedBundle::PageUIClient::UIElementVisibility statusbarVisibility = m_page.injectedBundleUIClient().statusBarIsVisible(&amp;m_page);
</ins><span class="cx">     if (statusbarVisibility != API::InjectedBundle::PageUIClient::UIElementVisibility::Unknown)
</span><span class="cx">         return statusbarVisibility == API::InjectedBundle::PageUIClient::UIElementVisibility::Visible;
</span><span class="cx"> 
</span><span class="cx">     bool statusBarIsVisible = true;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetStatusBarIsVisible(), Messages::WebPageProxy::GetStatusBarIsVisible::Reply(statusBarIsVisible), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetStatusBarIsVisible(), Messages::WebPageProxy::GetStatusBarIsVisible::Reply(statusBarIsVisible), m_page.pageID()))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     return statusBarIsVisible;
</span><span class="lines">@@ -314,17 +323,17 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setMenubarVisible(bool menuBarVisible)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetMenuBarIsVisible(menuBarVisible));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetMenuBarIsVisible(menuBarVisible));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::menubarVisible()
</span><span class="cx"> {
</span><del>-    API::InjectedBundle::PageUIClient::UIElementVisibility menubarVisibility = m_page-&gt;injectedBundleUIClient().menuBarIsVisible(m_page);
</del><ins>+    API::InjectedBundle::PageUIClient::UIElementVisibility menubarVisibility = m_page.injectedBundleUIClient().menuBarIsVisible(&amp;m_page);
</ins><span class="cx">     if (menubarVisibility != API::InjectedBundle::PageUIClient::UIElementVisibility::Unknown)
</span><span class="cx">         return menubarVisibility == API::InjectedBundle::PageUIClient::UIElementVisibility::Visible;
</span><span class="cx">     
</span><span class="cx">     bool menuBarIsVisible = true;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetMenuBarIsVisible(), Messages::WebPageProxy::GetMenuBarIsVisible::Reply(menuBarIsVisible), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::GetMenuBarIsVisible(), Messages::WebPageProxy::GetMenuBarIsVisible::Reply(menuBarIsVisible), m_page.pageID()))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     return menuBarIsVisible;
</span><span class="lines">@@ -332,18 +341,18 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setResizable(bool resizable)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetIsResizable(resizable));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetIsResizable(resizable));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel level, const String&amp; message, unsigned lineNumber, unsigned columnNumber, const String&amp; sourceID)
</span><span class="cx"> {
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().willAddMessageToConsole(m_page, source, level, message, lineNumber, columnNumber, sourceID);
</del><ins>+    m_page.injectedBundleUIClient().willAddMessageToConsole(&amp;m_page, source, level, message, lineNumber, columnNumber, sourceID);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::canRunBeforeUnloadConfirmPanel()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;canRunBeforeUnloadConfirmPanel();
</del><ins>+    return m_page.canRunBeforeUnloadConfirmPanel();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::runBeforeUnloadConfirmPanel(const String&amp; message, Frame* frame)
</span><span class="lines">@@ -354,7 +363,7 @@
</span><span class="cx"> 
</span><span class="cx">     HangDetectionDisabler hangDetectionDisabler;
</span><span class="cx"> 
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunBeforeUnloadConfirmPanel(message, webFrame-&gt;frameID()), Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::Reply(shouldClose), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunBeforeUnloadConfirmPanel(message, webFrame-&gt;frameID()), Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::Reply(shouldClose), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return shouldClose;
</span><span class="lines">@@ -369,14 +378,14 @@
</span><span class="cx">     // a close execute synchronously as part of window.close, but other parts
</span><span class="cx">     // later on.
</span><span class="cx"> 
</span><del>-    m_page-&gt;corePage()-&gt;setGroupName(String());
</del><ins>+    m_page.corePage()-&gt;setGroupName(String());
</ins><span class="cx"> 
</span><del>-    if (WebFrame* frame = m_page-&gt;mainWebFrame()) {
</del><ins>+    if (WebFrame* frame = m_page.mainWebFrame()) {
</ins><span class="cx">         if (Frame* coreFrame = frame-&gt;coreFrame())
</span><span class="cx">             coreFrame-&gt;loader().stopForUserCancel();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_page-&gt;sendClose();
</del><ins>+    m_page.sendClose();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool shouldSuppressJavaScriptDialogs(Frame&amp; frame)
</span><span class="lines">@@ -396,11 +405,11 @@
</span><span class="cx">     ASSERT(webFrame);
</span><span class="cx"> 
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().willRunJavaScriptAlert(m_page, alertText, webFrame);
</del><ins>+    m_page.injectedBundleUIClient().willRunJavaScriptAlert(&amp;m_page, alertText, webFrame);
</ins><span class="cx"> 
</span><span class="cx">     HangDetectionDisabler hangDetectionDisabler;
</span><span class="cx"> 
</span><del>-    WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</del><ins>+    WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String&amp; message)
</span><span class="lines">@@ -412,12 +421,12 @@
</span><span class="cx">     ASSERT(webFrame);
</span><span class="cx"> 
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().willRunJavaScriptConfirm(m_page, message, webFrame);
</del><ins>+    m_page.injectedBundleUIClient().willRunJavaScriptConfirm(&amp;m_page, message, webFrame);
</ins><span class="cx"> 
</span><span class="cx">     HangDetectionDisabler hangDetectionDisabler;
</span><span class="cx"> 
</span><span class="cx">     bool result = false;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="lines">@@ -432,11 +441,11 @@
</span><span class="cx">     ASSERT(webFrame);
</span><span class="cx"> 
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().willRunJavaScriptPrompt(m_page, message, defaultValue, webFrame);
</del><ins>+    m_page.injectedBundleUIClient().willRunJavaScriptPrompt(&amp;m_page, message, defaultValue, webFrame);
</ins><span class="cx"> 
</span><span class="cx">     HangDetectionDisabler hangDetectionDisabler;
</span><span class="cx"> 
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return !result.isNull();
</span><span class="lines">@@ -445,27 +454,29 @@
</span><span class="cx"> void WebChromeClient::setStatusbarText(const String&amp; statusbarText)
</span><span class="cx"> {
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().willSetStatusbarText(m_page, statusbarText);
</del><ins>+    m_page.injectedBundleUIClient().willSetStatusbarText(&amp;m_page, statusbarText);
</ins><span class="cx"> 
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetStatusText(statusbarText));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetStatusText(statusbarText));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> KeyboardUIMode WebChromeClient::keyboardUIMode()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;keyboardUIMode();
</del><ins>+    return m_page.keyboardUIMode();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><ins>+
</ins><span class="cx"> bool WebChromeClient::requestPointerLock()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::RequestPointerLock());
</del><ins>+    m_page.send(Messages::WebPageProxy::RequestPointerLock());
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::requestPointerUnlock()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::RequestPointerUnlock());
</del><ins>+    m_page.send(Messages::WebPageProxy::RequestPointerUnlock());
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::invalidateRootView(const IntRect&amp;)
</span><span class="lines">@@ -475,61 +486,61 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::invalidateContentsAndRootView(const IntRect&amp; rect)
</span><span class="cx"> {
</span><del>-    if (Document* document = m_page-&gt;corePage()-&gt;mainFrame().document()) {
</del><ins>+    if (Document* document = m_page.corePage()-&gt;mainFrame().document()) {
</ins><span class="cx">         if (document-&gt;printing())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_page-&gt;drawingArea()-&gt;setNeedsDisplayInRect(rect);
</del><ins>+    m_page.drawingArea()-&gt;setNeedsDisplayInRect(rect);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::invalidateContentsForSlowScroll(const IntRect&amp; rect)
</span><span class="cx"> {
</span><del>-    if (Document* document = m_page-&gt;corePage()-&gt;mainFrame().document()) {
</del><ins>+    if (Document* document = m_page.corePage()-&gt;mainFrame().document()) {
</ins><span class="cx">         if (document-&gt;printing())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_page-&gt;pageDidScroll();
</del><ins>+    m_page.pageDidScroll();
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    m_page-&gt;drawingArea()-&gt;scroll(rect, IntSize());
</del><ins>+    m_page.drawingArea()-&gt;scroll(rect, IntSize());
</ins><span class="cx"> #else
</span><del>-    m_page-&gt;drawingArea()-&gt;setNeedsDisplayInRect(rect);
</del><ins>+    m_page.drawingArea()-&gt;setNeedsDisplayInRect(rect);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::scroll(const IntSize&amp; scrollDelta, const IntRect&amp; scrollRect, const IntRect&amp; clipRect)
</span><span class="cx"> {
</span><del>-    m_page-&gt;pageDidScroll();
-    m_page-&gt;drawingArea()-&gt;scroll(intersection(scrollRect, clipRect), scrollDelta);
</del><ins>+    m_page.pageDidScroll();
+    m_page.drawingArea()-&gt;scroll(intersection(scrollRect, clipRect), scrollDelta);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><span class="cx"> void WebChromeClient::delegatedScrollRequested(const IntPoint&amp; scrollOffset)
</span><span class="cx"> {
</span><del>-    m_page-&gt;pageDidRequestScroll(scrollOffset);
</del><ins>+    m_page.pageDidRequestScroll(scrollOffset);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> IntPoint WebChromeClient::screenToRootView(const IntPoint&amp; point) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;screenToRootView(point);
</del><ins>+    return m_page.screenToRootView(point);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect WebChromeClient::rootViewToScreen(const IntRect&amp; rect) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;rootViewToScreen(rect);
</del><ins>+    return m_page.rootViewToScreen(rect);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> IntPoint WebChromeClient::accessibilityScreenToRootView(const IntPoint&amp; point) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;accessibilityScreenToRootView(point);
</del><ins>+    return m_page.accessibilityScreenToRootView(point);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect WebChromeClient::rootViewToAccessibilityScreen(const IntRect&amp; rect) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;rootViewToAccessibilityScreen(rect);
</del><ins>+    return m_page.rootViewToAccessibilityScreen(rect);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -541,11 +552,11 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::contentsSizeChanged(Frame* frame, const IntSize&amp; size) const
</span><span class="cx"> {
</span><del>-    if (!m_page-&gt;corePage()-&gt;settings().frameFlatteningEnabled()) {
</del><ins>+    if (!m_page.corePage()-&gt;settings().frameFlatteningEnabled()) {
</ins><span class="cx">         WebFrame* largestFrame = findLargestFrameInFrameSet(m_page);
</span><span class="cx">         if (largestFrame != m_cachedFrameSetLargestFrame.get()) {
</span><span class="cx">             m_cachedFrameSetLargestFrame = largestFrame;
</span><del>-            m_page-&gt;send(Messages::WebPageProxy::FrameSetLargestFrameChanged(largestFrame ? largestFrame-&gt;frameID() : 0));
</del><ins>+            m_page.send(Messages::WebPageProxy::FrameSetLargestFrameChanged(largestFrame ? largestFrame-&gt;frameID() : 0));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -552,9 +563,9 @@
</span><span class="cx">     if (&amp;frame-&gt;page()-&gt;mainFrame() != frame)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::DidChangeContentSize(size));
</del><ins>+    m_page.send(Messages::WebPageProxy::DidChangeContentSize(size));
</ins><span class="cx"> 
</span><del>-    m_page-&gt;drawingArea()-&gt;mainFrameContentSizeChanged(size);
</del><ins>+    m_page.drawingArea()-&gt;mainFrameContentSizeChanged(size);
</ins><span class="cx"> 
</span><span class="cx">     FrameView* frameView = frame-&gt;view();
</span><span class="cx">     if (frameView &amp;&amp; !frameView-&gt;delegatesScrolling())  {
</span><span class="lines">@@ -562,7 +573,7 @@
</span><span class="cx">         bool hasVerticalScrollbar = frameView-&gt;verticalScrollbar();
</span><span class="cx"> 
</span><span class="cx">         if (hasHorizontalScrollbar != m_cachedMainFrameHasHorizontalScrollbar || hasVerticalScrollbar != m_cachedMainFrameHasVerticalScrollbar) {
</span><del>-            m_page-&gt;send(Messages::WebPageProxy::DidChangeScrollbarsForMainFrame(hasHorizontalScrollbar, hasVerticalScrollbar));
</del><ins>+            m_page.send(Messages::WebPageProxy::DidChangeScrollbarsForMainFrame(hasHorizontalScrollbar, hasVerticalScrollbar));
</ins><span class="cx"> 
</span><span class="cx">             m_cachedMainFrameHasHorizontalScrollbar = hasHorizontalScrollbar;
</span><span class="cx">             m_cachedMainFrameHasVerticalScrollbar = hasVerticalScrollbar;
</span><span class="lines">@@ -603,12 +614,12 @@
</span><span class="cx">     HTMLPlugInImageElement* pluginElement = static_cast&lt;HTMLPlugInImageElement*&gt;(element);
</span><span class="cx"> 
</span><span class="cx">     String frameURLString = pluginElement-&gt;document().frame()-&gt;loader().documentLoader()-&gt;responseURL().string();
</span><del>-    String pageURLString = m_page-&gt;mainFrame()-&gt;loader().documentLoader()-&gt;responseURL().string();
</del><ins>+    String pageURLString = m_page.mainFrame()-&gt;loader().documentLoader()-&gt;responseURL().string();
</ins><span class="cx">     String pluginURLString = pluginElement-&gt;document().completeURL(pluginElement-&gt;url()).string();
</span><span class="cx">     URL pluginspageAttributeURL = element-&gt;document().completeURL(stripLeadingAndTrailingHTMLSpaces(pluginElement-&gt;getAttribute(pluginspageAttr)));
</span><span class="cx">     if (!pluginspageAttributeURL.protocolIsInHTTPFamily())
</span><span class="cx">         pluginspageAttributeURL = URL();
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::UnavailablePluginButtonClicked(pluginUnavailabilityReason, pluginElement-&gt;serviceType(), pluginURLString, pluginspageAttributeURL.string(), frameURLString, pageURLString));
</del><ins>+    m_page.send(Messages::WebPageProxy::UnavailablePluginButtonClicked(pluginUnavailabilityReason, pluginElement-&gt;serviceType(), pluginURLString, pluginspageAttributeURL.string(), frameURLString, pageURLString));
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(element);
</span><span class="cx">     UNUSED_PARAM(pluginUnavailabilityReason);
</span><span class="lines">@@ -625,11 +636,11 @@
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><span class="cx"> 
</span><span class="cx">     // Notify the bundle client.
</span><del>-    m_page-&gt;injectedBundleUIClient().mouseDidMoveOverElement(m_page, hitTestResult, static_cast&lt;WebEvent::Modifiers&gt;(modifierFlags), userData);
</del><ins>+    m_page.injectedBundleUIClient().mouseDidMoveOverElement(&amp;m_page, hitTestResult, static_cast&lt;WebEvent::Modifiers&gt;(modifierFlags), userData);
</ins><span class="cx"> 
</span><span class="cx">     // Notify the UIProcess.
</span><span class="cx">     WebHitTestResultData webHitTestResultData(hitTestResult);
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::MouseDidMoveOverElement(webHitTestResultData, modifierFlags, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</del><ins>+    m_page.send(Messages::WebPageProxy::MouseDidMoveOverElement(webHitTestResultData, modifierFlags, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setToolTip(const String&amp; toolTip, TextDirection)
</span><span class="lines">@@ -640,7 +651,7 @@
</span><span class="cx">         return;
</span><span class="cx">     m_cachedToolTip = toolTip;
</span><span class="cx"> 
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetToolTip(m_cachedToolTip));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetToolTip(m_cachedToolTip));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::print(Frame* frame)
</span><span class="lines">@@ -668,7 +679,7 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    m_page-&gt;sendSync(Messages::WebPageProxy::PrintFrame(webFrame-&gt;frameID()), Messages::WebPageProxy::PrintFrame::Reply(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</del><ins>+    m_page.sendSync(Messages::WebPageProxy::PrintFrame(webFrame-&gt;frameID()), Messages::WebPageProxy::PrintFrame::Reply(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::exceededDatabaseQuota(Frame* frame, const String&amp; databaseName, DatabaseDetails details)
</span><span class="lines">@@ -686,12 +697,12 @@
</span><span class="cx">     auto currentOriginUsage = tracker.usage(originData);
</span><span class="cx">     uint64_t newQuota = 0;
</span><span class="cx">     RefPtr&lt;API::SecurityOrigin&gt; securityOrigin = API::SecurityOrigin::create(WebCore::SecurityOriginData::fromDatabaseIdentifier(WebCore::SecurityOriginData::fromSecurityOrigin(*origin).databaseIdentifier())-&gt;securityOrigin());
</span><del>-    newQuota = m_page-&gt;injectedBundleUIClient().didExceedDatabaseQuota(m_page, securityOrigin.get(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage());
</del><ins>+    newQuota = m_page.injectedBundleUIClient().didExceedDatabaseQuota(&amp;m_page, securityOrigin.get(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage());
</ins><span class="cx"> 
</span><span class="cx">     if (!newQuota) {
</span><span class="cx">         WebProcess::singleton().parentProcessConnection()-&gt;sendSync(
</span><span class="cx">             Messages::WebPageProxy::ExceededDatabaseQuota(webFrame-&gt;frameID(), WebCore::SecurityOriginData::fromSecurityOrigin(*origin).databaseIdentifier(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage()),
</span><del>-            Messages::WebPageProxy::ExceededDatabaseQuota::Reply(newQuota), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</del><ins>+            Messages::WebPageProxy::ExceededDatabaseQuota::Reply(newQuota), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     tracker.setQuota(originData, newQuota);
</span><span class="lines">@@ -705,10 +716,10 @@
</span><span class="cx"> void WebChromeClient::reachedApplicationCacheOriginQuota(SecurityOrigin* origin, int64_t totalBytesNeeded)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;API::SecurityOrigin&gt; securityOrigin = API::SecurityOrigin::createFromString(origin-&gt;toString());
</span><del>-    if (m_page-&gt;injectedBundleUIClient().didReachApplicationCacheOriginQuota(m_page, securityOrigin.get(), totalBytesNeeded))
</del><ins>+    if (m_page.injectedBundleUIClient().didReachApplicationCacheOriginQuota(&amp;m_page, securityOrigin.get(), totalBytesNeeded))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    auto&amp; cacheStorage = m_page-&gt;corePage()-&gt;applicationCacheStorage();
</del><ins>+    auto&amp; cacheStorage = m_page.corePage()-&gt;applicationCacheStorage();
</ins><span class="cx">     int64_t currentQuota = 0;
</span><span class="cx">     if (!cacheStorage.calculateQuotaForOrigin(origin, currentQuota))
</span><span class="cx">         return;
</span><span class="lines">@@ -716,7 +727,7 @@
</span><span class="cx">     uint64_t newQuota = 0;
</span><span class="cx">     WebProcess::singleton().parentProcessConnection()-&gt;sendSync(
</span><span class="cx">         Messages::WebPageProxy::ReachedApplicationCacheOriginQuota(WebCore::SecurityOriginData::fromSecurityOrigin(*origin).databaseIdentifier(), currentQuota, totalBytesNeeded),
</span><del>-        Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::Reply(newQuota), m_page-&gt;pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</del><ins>+        Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::Reply(newQuota), m_page.pageID(), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend);
</ins><span class="cx"> 
</span><span class="cx">     cacheStorage.storeUpdatedQuotaForOrigin(origin, newQuota);
</span><span class="cx"> }
</span><span class="lines">@@ -730,35 +741,32 @@
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::shouldReplaceWithGeneratedFileForUpload(const String&amp; path, String&amp; generatedFilename)
</span><span class="cx"> {
</span><del>-    generatedFilename = m_page-&gt;injectedBundleUIClient().shouldGenerateFileForUpload(m_page, path);
</del><ins>+    generatedFilename = m_page.injectedBundleUIClient().shouldGenerateFileForUpload(&amp;m_page, path);
</ins><span class="cx">     return !generatedFilename.isNull();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebChromeClient::generateReplacementFile(const String&amp; path)
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleUIClient().generateFileForUpload(m_page, path);
</del><ins>+    return m_page.injectedBundleUIClient().generateFileForUpload(&amp;m_page, path);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><span class="cx"> std::unique_ptr&lt;ColorChooser&gt; WebChromeClient::createColorChooser(ColorChooserClient* client, const Color&amp; initialColor)
</span><span class="cx"> {
</span><del>-    return std::make_unique&lt;WebColorChooser&gt;(m_page, client, initialColor);
</del><ins>+    return std::make_unique&lt;WebColorChooser&gt;(&amp;m_page, client, initialColor);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void WebChromeClient::runOpenPanel(Frame* frame, PassRefPtr&lt;FileChooser&gt; prpFileChooser)
</del><ins>+void WebChromeClient::runOpenPanel(Frame&amp; frame, FileChooser&amp; fileChooser)
</ins><span class="cx"> {
</span><del>-    if (m_page-&gt;activeOpenPanelResultListener())
</del><ins>+    if (m_page.activeOpenPanelResultListener())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;FileChooser&gt; fileChooser = prpFileChooser;
</del><ins>+    m_page.setActiveOpenPanelResultListener(WebOpenPanelResultListener::create(&amp;m_page, &amp;fileChooser));
</ins><span class="cx"> 
</span><del>-    m_page-&gt;setActiveOpenPanelResultListener(WebOpenPanelResultListener::create(m_page, fileChooser.get()));
-
-    WebFrame* webFrame = WebFrame::fromCoreFrame(*frame);
</del><ins>+    auto* webFrame = WebFrame::fromCoreFrame(frame);
</ins><span class="cx">     ASSERT(webFrame);
</span><del>-
-    m_page-&gt;send(Messages::WebPageProxy::RunOpenPanel(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(frame), fileChooser-&gt;settings()));
</del><ins>+    m_page.send(Messages::WebPageProxy::RunOpenPanel(webFrame-&gt;frameID(), SecurityOriginData::fromFrame(&amp;frame), fileChooser.settings()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::loadIconForFiles(const Vector&lt;String&gt;&amp; filenames, FileIconLoader&amp; loader)
</span><span class="lines">@@ -767,34 +775,38 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::setCursor(const WebCore::Cursor&amp; cursor)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetCursor(cursor));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetCursor(cursor));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setCursorHiddenUntilMouseMoves(bool hiddenUntilMouseMoves)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetCursorHiddenUntilMouseMoves(hiddenUntilMouseMoves));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetCursorHiddenUntilMouseMoves(hiddenUntilMouseMoves));
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !USE(REQUEST_ANIMATION_FRAME_TIMER)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::scheduleAnimation()
</span><span class="cx"> {
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;scheduleAnimation();
</del><ins>+    m_page.drawingArea()-&gt;layerTreeHost()-&gt;scheduleAnimation();
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didAssociateFormControls(const Vector&lt;RefPtr&lt;WebCore::Element&gt;&gt;&amp; elements)
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleFormClient().didAssociateFormControls(m_page, elements);
</del><ins>+    return m_page.injectedBundleFormClient().didAssociateFormControls(&amp;m_page, elements);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::shouldNotifyOnFormChanges()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleFormClient().shouldNotifyOnFormChanges(m_page);
</del><ins>+    return m_page.injectedBundleFormClient().shouldNotifyOnFormChanges(&amp;m_page);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::selectItemWritingDirectionIsNatural()
</span><span class="lines">@@ -819,39 +831,41 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;WebCore::PopupMenu&gt; WebChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const
</span><span class="cx"> {
</span><del>-    return WebPopupMenu::create(m_page, client);
</del><ins>+    return WebPopupMenu::create(&amp;m_page, client);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;WebCore::SearchPopupMenu&gt; WebChromeClient::createSearchPopupMenu(WebCore::PopupMenuClient* client) const
</span><span class="cx"> {
</span><del>-    return WebSearchPopupMenu::create(m_page, client);
</del><ins>+    return WebSearchPopupMenu::create(&amp;m_page, client);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> GraphicsLayerFactory* WebChromeClient::graphicsLayerFactory() const
</span><span class="cx"> {
</span><del>-    if (auto drawingArea = m_page-&gt;drawingArea())
</del><ins>+    if (auto drawingArea = m_page.drawingArea())
</ins><span class="cx">         return drawingArea-&gt;graphicsLayerFactory();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)
</span><ins>+
</ins><span class="cx"> RefPtr&lt;WebCore::DisplayRefreshMonitor&gt; WebChromeClient::createDisplayRefreshMonitor(PlatformDisplayID displayID) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;drawingArea()-&gt;createDisplayRefreshMonitor(displayID);
</del><ins>+    return m_page.drawingArea()-&gt;createDisplayRefreshMonitor(displayID);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::attachRootGraphicsLayer(Frame*, GraphicsLayer* layer)
</span><span class="cx"> {
</span><span class="cx">     if (layer)
</span><del>-        m_page-&gt;enterAcceleratedCompositingMode(layer);
</del><ins>+        m_page.enterAcceleratedCompositingMode(layer);
</ins><span class="cx">     else
</span><del>-        m_page-&gt;exitAcceleratedCompositingMode();
</del><ins>+        m_page.exitAcceleratedCompositingMode();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::attachViewOverlayGraphicsLayer(Frame* frame, GraphicsLayer* graphicsLayer)
</span><span class="cx"> {
</span><del>-    if (auto drawingArea = m_page-&gt;drawingArea())
</del><ins>+    if (auto drawingArea = m_page.drawingArea())
</ins><span class="cx">         drawingArea-&gt;attachViewOverlayGraphicsLayer(frame, graphicsLayer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -862,128 +876,136 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::scheduleCompositingLayerFlush()
</span><span class="cx"> {
</span><del>-    if (m_page-&gt;drawingArea())
-        m_page-&gt;drawingArea()-&gt;scheduleCompositingLayerFlush();
</del><ins>+    if (m_page.drawingArea())
+        m_page.drawingArea()-&gt;scheduleCompositingLayerFlush();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::adjustLayerFlushThrottling(WebCore::LayerFlushThrottleState::Flags flags)
</span><span class="cx"> {
</span><del>-    return m_page-&gt;drawingArea() &amp;&amp; m_page-&gt;drawingArea()-&gt;adjustLayerFlushThrottling(flags);
</del><ins>+    return m_page.drawingArea() &amp;&amp; m_page.drawingArea()-&gt;adjustLayerFlushThrottling(flags);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::layerTreeStateIsFrozen() const
</span><span class="cx"> {
</span><del>-    if (m_page-&gt;drawingArea())
-        return m_page-&gt;drawingArea()-&gt;layerTreeStateIsFrozen();
</del><ins>+    if (m_page.drawingArea())
+        return m_page.drawingArea()-&gt;layerTreeStateIsFrozen();
</ins><span class="cx"> 
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ASYNC_SCROLLING)
</span><ins>+
</ins><span class="cx"> PassRefPtr&lt;ScrollingCoordinator&gt; WebChromeClient::createScrollingCoordinator(Page* page) const
</span><span class="cx"> {
</span><del>-    ASSERT(m_page-&gt;corePage() == page);
-    if (m_page-&gt;drawingArea()-&gt;type() == DrawingAreaTypeRemoteLayerTree)
-        return RemoteScrollingCoordinator::create(m_page);
</del><ins>+    ASSERT(m_page.corePage() == page);
+    if (m_page.drawingArea()-&gt;type() != DrawingAreaTypeRemoteLayerTree)
+        return nullptr;
+    return RemoteScrollingCoordinator::create(&amp;m_page);
+}
</ins><span class="cx"> 
</span><del>-    return 0;
-}
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if (PLATFORM(IOS) &amp;&amp; HAVE(AVKIT)) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
</span><ins>+
</ins><span class="cx"> bool WebChromeClient::supportsVideoFullscreen(WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode)
</span><span class="cx"> {
</span><del>-    return m_page-&gt;videoFullscreenManager().supportsVideoFullscreen(mode);
</del><ins>+    return m_page.videoFullscreenManager().supportsVideoFullscreen(mode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setUpPlaybackControlsManager(WebCore::HTMLMediaElement&amp; mediaElement)
</span><span class="cx"> {
</span><del>-    m_page-&gt;playbackSessionManager().setUpPlaybackControlsManager(mediaElement);
</del><ins>+    m_page.playbackSessionManager().setUpPlaybackControlsManager(mediaElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::clearPlaybackControlsManager()
</span><span class="cx"> {
</span><del>-    m_page-&gt;playbackSessionManager().clearPlaybackControlsManager();
</del><ins>+    m_page.playbackSessionManager().clearPlaybackControlsManager();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp; videoElement, WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(mode != HTMLMediaElementEnums::VideoFullscreenModeNone);
</span><del>-    m_page-&gt;videoFullscreenManager().enterVideoFullscreenForVideoElement(videoElement, mode);
</del><ins>+    m_page.videoFullscreenManager().enterVideoFullscreenForVideoElement(videoElement, mode);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp; videoElement)
</span><span class="cx"> {
</span><del>-    m_page-&gt;videoFullscreenManager().exitVideoFullscreenForVideoElement(videoElement);
</del><ins>+    m_page.videoFullscreenManager().exitVideoFullscreenForVideoElement(videoElement);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#endif
+
</ins><span class="cx"> #if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::exitVideoFullscreenToModeWithoutAnimation(WebCore::HTMLVideoElement&amp; videoElement, HTMLMediaElementEnums::VideoFullscreenMode targetMode)
</span><span class="cx"> {
</span><del>-    m_page-&gt;videoFullscreenManager().exitVideoFullscreenToModeWithoutAnimation(videoElement, targetMode);
</del><ins>+    m_page.videoFullscreenManager().exitVideoFullscreenToModeWithoutAnimation(videoElement, targetMode);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#endif
-    
</del><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><ins>+
</ins><span class="cx"> bool WebChromeClient::supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard)
</span><span class="cx"> {
</span><del>-    return m_page-&gt;fullScreenManager()-&gt;supportsFullScreen(withKeyboard);
</del><ins>+    return m_page.fullScreenManager()-&gt;supportsFullScreen(withKeyboard);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::enterFullScreenForElement(WebCore::Element* element)
</span><span class="cx"> {
</span><del>-    m_page-&gt;fullScreenManager()-&gt;enterFullScreenForElement(element);
</del><ins>+    m_page.fullScreenManager()-&gt;enterFullScreenForElement(element);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::exitFullScreenForElement(WebCore::Element* element)
</span><span class="cx"> {
</span><del>-    m_page-&gt;fullScreenManager()-&gt;exitFullScreenForElement(element);
</del><ins>+    m_page.fullScreenManager()-&gt;exitFullScreenForElement(element);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> FloatSize WebChromeClient::screenSize() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;screenSize();
</del><ins>+    return m_page.screenSize();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatSize WebChromeClient::availableScreenSize() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;availableScreenSize();
</del><ins>+    return m_page.availableScreenSize();
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::dispatchViewportPropertiesDidChange(const ViewportArguments&amp; viewportArguments) const
</span><span class="cx"> {
</span><del>-    m_page-&gt;viewportPropertiesDidChange(viewportArguments);
</del><ins>+    m_page.viewportPropertiesDidChange(viewportArguments);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::notifyScrollerThumbIsVisibleInRect(const IntRect&amp; scrollerThumb)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::NotifyScrollerThumbIsVisibleInRect(scrollerThumb));
</del><ins>+    m_page.send(Messages::WebPageProxy::NotifyScrollerThumbIsVisibleInRect(scrollerThumb));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::recommendedScrollbarStyleDidChange(ScrollbarStyle newStyle)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::RecommendedScrollbarStyleDidChange(static_cast&lt;int32_t&gt;(newStyle)));
</del><ins>+    m_page.send(Messages::WebPageProxy::RecommendedScrollbarStyleDidChange(static_cast&lt;int32_t&gt;(newStyle)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::optional&lt;ScrollbarOverlayStyle&gt; WebChromeClient::preferredScrollbarOverlayStyle()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;scrollbarOverlayStyle(); 
</del><ins>+    return m_page.scrollbarOverlayStyle();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Color WebChromeClient::underlayColor() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;underlayColor();
</del><ins>+    return m_page.underlayColor();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::pageExtendedBackgroundColorDidChange(Color backgroundColor) const
</span><span class="cx"> {
</span><span class="cx"> #if PLATFORM(MAC) || PLATFORM(EFL)
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::PageExtendedBackgroundColorDidChange(backgroundColor));
</del><ins>+    m_page.send(Messages::WebPageProxy::PageExtendedBackgroundColorDidChange(backgroundColor));
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(backgroundColor);
</span><span class="cx"> #endif
</span><span class="lines">@@ -991,43 +1013,43 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::wheelEventHandlersChanged(bool hasHandlers)
</span><span class="cx"> {
</span><del>-    m_page-&gt;wheelEventHandlersChanged(hasHandlers);
</del><ins>+    m_page.wheelEventHandlersChanged(hasHandlers);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebChromeClient::plugInStartLabelTitle(const String&amp; mimeType) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleUIClient().plugInStartLabelTitle(mimeType);
</del><ins>+    return m_page.injectedBundleUIClient().plugInStartLabelTitle(mimeType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebChromeClient::plugInStartLabelSubtitle(const String&amp; mimeType) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleUIClient().plugInStartLabelSubtitle(mimeType);
</del><ins>+    return m_page.injectedBundleUIClient().plugInStartLabelSubtitle(mimeType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebChromeClient::plugInExtraStyleSheet() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleUIClient().plugInExtraStyleSheet();
</del><ins>+    return m_page.injectedBundleUIClient().plugInExtraStyleSheet();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebChromeClient::plugInExtraScript() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;injectedBundleUIClient().plugInExtraScript();
</del><ins>+    return m_page.injectedBundleUIClient().plugInExtraScript();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::enableSuddenTermination()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebProcessProxy::EnableSuddenTermination());
</del><ins>+    m_page.send(Messages::WebProcessProxy::EnableSuddenTermination());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::disableSuddenTermination()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebProcessProxy::DisableSuddenTermination());
</del><ins>+    m_page.send(Messages::WebProcessProxy::DisableSuddenTermination());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didAddHeaderLayer(GraphicsLayer* headerParent)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(RUBBER_BANDING)
</span><del>-    if (PageBanner* banner = m_page-&gt;headerPageBanner())
</del><ins>+    if (PageBanner* banner = m_page.headerPageBanner())
</ins><span class="cx">         banner-&gt;didAddParentLayer(headerParent);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(headerParent);
</span><span class="lines">@@ -1037,7 +1059,7 @@
</span><span class="cx"> void WebChromeClient::didAddFooterLayer(GraphicsLayer* footerParent)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(RUBBER_BANDING)
</span><del>-    if (PageBanner* banner = m_page-&gt;footerPageBanner())
</del><ins>+    if (PageBanner* banner = m_page.footerPageBanner())
</ins><span class="cx">         banner-&gt;didAddParentLayer(footerParent);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(footerParent);
</span><span class="lines">@@ -1046,36 +1068,39 @@
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::shouldUseTiledBackingForFrameView(const FrameView* frameView) const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;drawingArea()-&gt;shouldUseTiledBackingForFrameView(frameView);
</del><ins>+    return m_page.drawingArea()-&gt;shouldUseTiledBackingForFrameView(frameView);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::isPlayingMediaDidChange(WebCore::MediaProducer::MediaStateFlags state, uint64_t sourceElementID)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::IsPlayingMediaDidChange(state, sourceElementID));
</del><ins>+    m_page.send(Messages::WebPageProxy::IsPlayingMediaDidChange(state, sourceElementID));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::hasMediaSessionWithActiveMediaElementsDidChange(bool state)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::HasMediaSessionWithActiveMediaElementsDidChange(state));
</del><ins>+    m_page.send(Messages::WebPageProxy::HasMediaSessionWithActiveMediaElementsDidChange(state));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::mediaSessionMetadataDidChange(const WebCore::MediaSessionMetadata&amp; metadata)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::MediaSessionMetadataDidChange(metadata));
</del><ins>+    m_page.send(Messages::WebPageProxy::MediaSessionMetadataDidChange(metadata));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::focusedContentMediaElementDidChange(uint64_t elementID)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::FocusedContentMediaElementDidChange(elementID));
</del><ins>+    m_page.send(Messages::WebPageProxy::FocusedContentMediaElementDidChange(elementID));
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><ins>+
</ins><span class="cx"> bool WebChromeClient::wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp; key, Vector&lt;uint8_t&gt;&amp; wrappedKey) const
</span><span class="cx"> {
</span><span class="cx">     bool succeeded;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::WrapCryptoKey(key), Messages::WebPageProxy::WrapCryptoKey::Reply(succeeded, wrappedKey), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::WrapCryptoKey(key), Messages::WebPageProxy::WrapCryptoKey::Reply(succeeded, wrappedKey), m_page.pageID()))
</ins><span class="cx">         return false;
</span><span class="cx">     return succeeded;
</span><span class="cx"> }
</span><span class="lines">@@ -1083,23 +1108,27 @@
</span><span class="cx"> bool WebChromeClient::unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp; wrappedKey, Vector&lt;uint8_t&gt;&amp; key) const
</span><span class="cx"> {
</span><span class="cx">     bool succeeded;
</span><del>-    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::UnwrapCryptoKey(wrappedKey), Messages::WebPageProxy::UnwrapCryptoKey::Reply(succeeded, key), m_page-&gt;pageID()))
</del><ins>+    if (!WebProcess::singleton().parentProcessConnection()-&gt;sendSync(Messages::WebPageProxy::UnwrapCryptoKey(wrappedKey), Messages::WebPageProxy::UnwrapCryptoKey::Reply(succeeded, key), m_page.pageID()))
</ins><span class="cx">         return false;
</span><span class="cx">     return succeeded;
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TELEPHONE_NUMBER_DETECTION) &amp;&amp; PLATFORM(MAC)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::handleTelephoneNumberClick(const String&amp; number, const WebCore::IntPoint&amp; point)
</span><span class="cx"> {
</span><del>-    m_page-&gt;handleTelephoneNumberClick(number, point);
</del><ins>+    m_page.handleTelephoneNumberClick(number, point);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SERVICE_CONTROLS)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::handleSelectionServiceClick(WebCore::FrameSelection&amp; selection, const Vector&lt;String&gt;&amp; telephoneNumbers, const WebCore::IntPoint&amp; point)
</span><span class="cx"> {
</span><del>-    m_page-&gt;handleSelectionServiceClick(selection, telephoneNumbers, point);
</del><ins>+    m_page.handleSelectionServiceClick(selection, telephoneNumbers, point);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::hasRelevantSelectionServices(bool isTextOnly) const
</span><span class="lines">@@ -1106,11 +1135,12 @@
</span><span class="cx"> {
</span><span class="cx">     return (isTextOnly &amp;&amp; WebProcess::singleton().hasSelectionServices()) || WebProcess::singleton().hasRichContentServices();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::shouldDispatchFakeMouseMoveEvents() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;shouldDispatchFakeMouseMoveEvents();
</del><ins>+    return m_page.shouldDispatchFakeMouseMoveEvents();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::handleAutoFillButtonClick(HTMLInputElement&amp; inputElement)
</span><span class="lines">@@ -1119,64 +1149,65 @@
</span><span class="cx"> 
</span><span class="cx">     // Notify the bundle client.
</span><span class="cx">     auto nodeHandle = InjectedBundleNodeHandle::getOrCreate(inputElement);
</span><del>-    m_page-&gt;injectedBundleUIClient().didClickAutoFillButton(*m_page, nodeHandle.get(), userData);
</del><ins>+    m_page.injectedBundleUIClient().didClickAutoFillButton(m_page, nodeHandle.get(), userData);
</ins><span class="cx"> 
</span><span class="cx">     // Notify the UIProcess.
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::HandleAutoFillButtonClick(UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</del><ins>+    m_page.send(Messages::WebPageProxy::HandleAutoFillButtonClick(UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::addPlaybackTargetPickerClient(uint64_t contextId)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::AddPlaybackTargetPickerClient(contextId));
</del><ins>+    m_page.send(Messages::WebPageProxy::AddPlaybackTargetPickerClient(contextId));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::removePlaybackTargetPickerClient(uint64_t contextId)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::RemovePlaybackTargetPickerClient(contextId));
</del><ins>+    m_page.send(Messages::WebPageProxy::RemovePlaybackTargetPickerClient(contextId));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> void WebChromeClient::showPlaybackTargetPicker(uint64_t contextId, const WebCore::IntPoint&amp; position, bool isVideo)
</span><span class="cx"> {
</span><del>-    FrameView* frameView = m_page-&gt;mainFrame()-&gt;view();
</del><ins>+    FrameView* frameView = m_page.mainFrame()-&gt;view();
</ins><span class="cx">     FloatRect rect(frameView-&gt;contentsToRootView(frameView-&gt;windowToContents(position)), FloatSize());
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::ShowPlaybackTargetPicker(contextId, rect, isVideo));
</del><ins>+    m_page.send(Messages::WebPageProxy::ShowPlaybackTargetPicker(contextId, rect, isVideo));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::playbackTargetPickerClientStateDidChange(uint64_t contextId, WebCore::MediaProducer::MediaStateFlags state)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::PlaybackTargetPickerClientStateDidChange(contextId, state));
</del><ins>+    m_page.send(Messages::WebPageProxy::PlaybackTargetPickerClientStateDidChange(contextId, state));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setMockMediaPlaybackTargetPickerEnabled(bool enabled)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetMockMediaPlaybackTargetPickerEnabled(enabled));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetMockMediaPlaybackTargetPickerEnabled(enabled));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setMockMediaPlaybackTargetPickerState(const String&amp; name, WebCore::MediaPlaybackTargetContext::State state)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::SetMockMediaPlaybackTargetPickerState(name, state));
</del><ins>+    m_page.send(Messages::WebPageProxy::SetMockMediaPlaybackTargetPickerState(name, state));
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::imageOrMediaDocumentSizeChanged(const WebCore::IntSize&amp; newSize)
</span><span class="cx"> {
</span><del>-    m_page-&gt;imageOrMediaDocumentSizeChanged(newSize);
</del><ins>+    m_page.imageOrMediaDocumentSizeChanged(newSize);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(VIDEO)
-#if USE(GSTREAMER)
</del><ins>+#if ENABLE(VIDEO) &amp;&amp; USE(GSTREAMER)
+
</ins><span class="cx"> void WebChromeClient::requestInstallMissingMediaPlugins(const String&amp; details, const String&amp; description, WebCore::MediaPlayerRequestInstallMissingPluginsCallback&amp; callback)
</span><span class="cx"> {
</span><del>-    m_page-&gt;requestInstallMissingMediaPlugins(details, description, callback);
</del><ins>+    m_page.requestInstallMissingMediaPlugins(details, description, callback);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><del>-#endif // ENABLE(VIDEO)
</del><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didInvalidateDocumentMarkerRects()
</span><span class="cx"> {
</span><del>-    m_page-&gt;findController().didInvalidateDocumentMarkerRects();
</del><ins>+    m_page.findController().didInvalidateDocumentMarkerRects();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -26,198 +26,196 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;WebFrame.h&quot;
</del><span class="cx"> #include &lt;WebCore/ChromeClient.h&gt;
</span><del>-#include &lt;WebCore/ViewportArguments.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+class WebFrame;
</ins><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><del>-class WebChromeClient : public WebCore::ChromeClient {
</del><ins>+class WebChromeClient final : public WebCore::ChromeClient {
</ins><span class="cx"> public:
</span><del>-    WebChromeClient(WebPage* page)
-        : m_cachedMainFrameHasHorizontalScrollbar(false)
-        , m_cachedMainFrameHasVerticalScrollbar(false)
-        , m_page(page)
-    {
-    }
-    
-    WebPage* page() const { return m_page; }
</del><ins>+    WebChromeClient(WebPage&amp;);
</ins><span class="cx"> 
</span><del>-    virtual void* webView() const { return 0; }
</del><ins>+    WebPage&amp; page() const { return m_page; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void chromeDestroyed() override;
</del><ins>+    ~WebChromeClient();
+
+    void chromeDestroyed() final;
</ins><span class="cx">     
</span><del>-    void setWindowRect(const WebCore::FloatRect&amp;) override;
-    WebCore::FloatRect windowRect() override;
</del><ins>+    void setWindowRect(const WebCore::FloatRect&amp;) final;
+    WebCore::FloatRect windowRect() final;
</ins><span class="cx">     
</span><del>-    WebCore::FloatRect pageRect() override;
</del><ins>+    WebCore::FloatRect pageRect() final;
</ins><span class="cx">     
</span><del>-    void focus() override;
-    void unfocus() override;
</del><ins>+    void focus() final;
+    void unfocus() final;
</ins><span class="cx">     
</span><del>-    bool canTakeFocus(WebCore::FocusDirection) override;
-    void takeFocus(WebCore::FocusDirection) override;
</del><ins>+    bool canTakeFocus(WebCore::FocusDirection) final;
+    void takeFocus(WebCore::FocusDirection) final;
</ins><span class="cx"> 
</span><del>-    void focusedElementChanged(WebCore::Element*) override;
-    void focusedFrameChanged(WebCore::Frame*) override;
</del><ins>+    void focusedElementChanged(WebCore::Element*) final;
+    void focusedFrameChanged(WebCore::Frame*) final;
</ins><span class="cx"> 
</span><span class="cx">     // The Frame pointer provides the ChromeClient with context about which
</span><span class="cx">     // Frame wants to create the new Page.  Also, the newly created window
</span><span class="cx">     // should not be shown to the user until the ChromeClient of the newly
</span><span class="cx">     // created Page has its show method called.
</span><del>-    WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&amp;, const WebCore::WindowFeatures&amp;, const WebCore::NavigationAction&amp;) override;
-    void show() override;
</del><ins>+    WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&amp;, const WebCore::WindowFeatures&amp;, const WebCore::NavigationAction&amp;) final;
+    void show() final;
</ins><span class="cx">     
</span><del>-    bool canRunModal() override;
-    void runModal() override;
</del><ins>+    bool canRunModal() final;
+    void runModal() final;
</ins><span class="cx">     
</span><del>-    void setToolbarsVisible(bool) override;
-    bool toolbarsVisible() override;
</del><ins>+    void setToolbarsVisible(bool) final;
+    bool toolbarsVisible() final;
</ins><span class="cx">     
</span><del>-    void setStatusbarVisible(bool) override;
-    bool statusbarVisible() override;
</del><ins>+    void setStatusbarVisible(bool) final;
+    bool statusbarVisible() final;
</ins><span class="cx">     
</span><del>-    void setScrollbarsVisible(bool) override;
-    bool scrollbarsVisible() override;
</del><ins>+    void setScrollbarsVisible(bool) final;
+    bool scrollbarsVisible() final;
</ins><span class="cx">     
</span><del>-    void setMenubarVisible(bool) override;
-    bool menubarVisible() override;
</del><ins>+    void setMenubarVisible(bool) final;
+    bool menubarVisible() final;
</ins><span class="cx">     
</span><del>-    void setResizable(bool) override;
</del><ins>+    void setResizable(bool) final;
</ins><span class="cx">     
</span><del>-    void addMessageToConsole(JSC::MessageSource, JSC::MessageLevel, const String&amp; message, unsigned lineNumber, unsigned columnNumber, const String&amp; sourceID) override;
</del><ins>+    void addMessageToConsole(JSC::MessageSource, JSC::MessageLevel, const String&amp; message, unsigned lineNumber, unsigned columnNumber, const String&amp; sourceID) final;
</ins><span class="cx">     
</span><del>-    bool canRunBeforeUnloadConfirmPanel() override;
-    bool runBeforeUnloadConfirmPanel(const String&amp; message, WebCore::Frame*) override;
</del><ins>+    bool canRunBeforeUnloadConfirmPanel() final;
+    bool runBeforeUnloadConfirmPanel(const String&amp; message, WebCore::Frame*) final;
</ins><span class="cx">     
</span><del>-    void closeWindowSoon() override;
</del><ins>+    void closeWindowSoon() final;
</ins><span class="cx">     
</span><del>-    void runJavaScriptAlert(WebCore::Frame*, const String&amp;) override;
-    bool runJavaScriptConfirm(WebCore::Frame*, const String&amp;) override;
-    bool runJavaScriptPrompt(WebCore::Frame*, const String&amp; message, const String&amp; defaultValue, String&amp; result) override;
-    void setStatusbarText(const String&amp;) override;
</del><ins>+    void runJavaScriptAlert(WebCore::Frame*, const String&amp;) final;
+    bool runJavaScriptConfirm(WebCore::Frame*, const String&amp;) final;
+    bool runJavaScriptPrompt(WebCore::Frame*, const String&amp; message, const String&amp; defaultValue, String&amp; result) final;
+    void setStatusbarText(const String&amp;) final;
</ins><span class="cx"> 
</span><del>-    WebCore::KeyboardUIMode keyboardUIMode() override;
</del><ins>+    WebCore::KeyboardUIMode keyboardUIMode() final;
</ins><span class="cx"> 
</span><del>-    // HostWindow member function overrides.
-    void invalidateRootView(const WebCore::IntRect&amp;) override;
-    void invalidateContentsAndRootView(const WebCore::IntRect&amp;) override;
-    void invalidateContentsForSlowScroll(const WebCore::IntRect&amp;) override;
-    void scroll(const WebCore::IntSize&amp; scrollDelta, const WebCore::IntRect&amp; scrollRect, const WebCore::IntRect&amp; clipRect) override;
</del><ins>+    // HostWindow member function finals.
+    void invalidateRootView(const WebCore::IntRect&amp;) final;
+    void invalidateContentsAndRootView(const WebCore::IntRect&amp;) final;
+    void invalidateContentsForSlowScroll(const WebCore::IntRect&amp;) final;
+    void scroll(const WebCore::IntSize&amp; scrollDelta, const WebCore::IntRect&amp; scrollRect, const WebCore::IntRect&amp; clipRect) final;
+
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    void delegatedScrollRequested(const WebCore::IntPoint&amp; scrollOffset) override;
</del><ins>+    void delegatedScrollRequested(const WebCore::IntPoint&amp; scrollOffset) final;
</ins><span class="cx"> #endif
</span><del>-    WebCore::IntPoint screenToRootView(const WebCore::IntPoint&amp;) const override;
-    WebCore::IntRect rootViewToScreen(const WebCore::IntRect&amp;) const override;
</del><ins>+
+    WebCore::IntPoint screenToRootView(const WebCore::IntPoint&amp;) const final;
+    WebCore::IntRect rootViewToScreen(const WebCore::IntRect&amp;) const final;
+
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    WebCore::IntPoint accessibilityScreenToRootView(const WebCore::IntPoint&amp;) const override;
-    WebCore::IntRect rootViewToAccessibilityScreen(const WebCore::IntRect&amp;) const override;
</del><ins>+    WebCore::IntPoint accessibilityScreenToRootView(const WebCore::IntPoint&amp;) const final;
+    WebCore::IntRect rootViewToAccessibilityScreen(const WebCore::IntRect&amp;) const final;
</ins><span class="cx"> #endif
</span><del>-    PlatformPageClient platformPageClient() const override;
-    void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&amp;) const override;
-    void scrollRectIntoView(const WebCore::IntRect&amp;) const override; // Currently only Mac has a non empty implementation.
</del><span class="cx"> 
</span><del>-    bool shouldUnavailablePluginMessageBeButton(WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
-    void unavailablePluginButtonClicked(WebCore::Element*, WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
</del><ins>+    PlatformPageClient platformPageClient() const final;
+    void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&amp;) const final;
+    void scrollRectIntoView(const WebCore::IntRect&amp;) const final; // Currently only Mac has a non empty implementation.
</ins><span class="cx"> 
</span><del>-    void scrollbarsModeDidChange() const override;
-    void mouseDidMoveOverElement(const WebCore::HitTestResult&amp;, unsigned modifierFlags) override;
</del><ins>+    bool shouldUnavailablePluginMessageBeButton(WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const final;
+    void unavailablePluginButtonClicked(WebCore::Element*, WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const final;
</ins><span class="cx"> 
</span><del>-    void setToolTip(const String&amp;, WebCore::TextDirection) override;
</del><ins>+    void scrollbarsModeDidChange() const final;
+    void mouseDidMoveOverElement(const WebCore::HitTestResult&amp;, unsigned modifierFlags) final;
+
+    void setToolTip(const String&amp;, WebCore::TextDirection) final;
</ins><span class="cx">     
</span><del>-    void print(WebCore::Frame*) override;
</del><ins>+    void print(WebCore::Frame*) final;
</ins><span class="cx"> 
</span><del>-    void exceededDatabaseQuota(WebCore::Frame*, const String&amp; databaseName, WebCore::DatabaseDetails) override;
</del><ins>+    void exceededDatabaseQuota(WebCore::Frame*, const String&amp; databaseName, WebCore::DatabaseDetails) final;
</ins><span class="cx"> 
</span><del>-    void reachedMaxAppCacheSize(int64_t spaceNeeded) override;
-    void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t spaceNeeded) override;
</del><ins>+    void reachedMaxAppCacheSize(int64_t spaceNeeded) final;
+    void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t spaceNeeded) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><del>-    void annotatedRegionsChanged() override;
</del><ins>+    void annotatedRegionsChanged() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool shouldReplaceWithGeneratedFileForUpload(const String&amp; path, String&amp; generatedFilename) override;
-    String generateReplacementFile(const String&amp; path) override;
</del><ins>+    bool shouldReplaceWithGeneratedFileForUpload(const String&amp; path, String&amp; generatedFilename) final;
+    String generateReplacementFile(const String&amp; path) final;
</ins><span class="cx">     
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><del>-    std::unique_ptr&lt;WebCore::ColorChooser&gt; createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&amp;) override;
</del><ins>+    std::unique_ptr&lt;WebCore::ColorChooser&gt; createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(IOS_TOUCH_EVENTS)
</span><del>-    void didPreventDefaultForEvent() override;
</del><ins>+    void didPreventDefaultForEvent() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    void didReceiveMobileDocType(bool) override;
-    void setNeedsScrollNotifications(WebCore::Frame*, bool) override;
-    void observedContentChange(WebCore::Frame*) override;
-    void clearContentChangeObservers(WebCore::Frame*) override;
-    void notifyRevealedSelectionByScrollingFrame(WebCore::Frame*) override;
-    bool isStopping() override;
</del><ins>+    void didReceiveMobileDocType(bool) final;
+    void setNeedsScrollNotifications(WebCore::Frame*, bool) final;
+    void observedContentChange(WebCore::Frame*) final;
+    void clearContentChangeObservers(WebCore::Frame*) final;
+    void notifyRevealedSelectionByScrollingFrame(WebCore::Frame*) final;
+    bool isStopping() final;
</ins><span class="cx"> 
</span><del>-    void didLayout(LayoutType = NormalLayout) override;
-    void didStartOverflowScroll() override;
-    void didEndOverflowScroll() override;
-    bool hasStablePageScaleFactor() const override;
</del><ins>+    void didLayout(LayoutType = NormalLayout) final;
+    void didStartOverflowScroll() final;
+    void didEndOverflowScroll() final;
+    bool hasStablePageScaleFactor() const final;
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: See &lt;rdar://problem/5975559&gt;
</span><del>-    void suppressFormNotifications() override;
-    void restoreFormNotifications() override;
</del><ins>+    void suppressFormNotifications() final;
+    void restoreFormNotifications() final;
</ins><span class="cx"> 
</span><del>-    void addOrUpdateScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer, const WebCore::IntSize&amp; scrollSize, bool allowHorizontalScrollbar, bool allowVerticalScrollbar) override;
-    void removeScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer) override;
</del><ins>+    void addOrUpdateScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer, const WebCore::IntSize&amp; scrollSize, bool allowHorizontalScrollbar, bool allowVerticalScrollbar) final;
+    void removeScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer) final;
</ins><span class="cx"> 
</span><del>-    void webAppOrientationsUpdated() override;
-    void showPlaybackTargetPicker(bool hasVideo) override;
</del><ins>+    void webAppOrientationsUpdated() final;
+    void showPlaybackTargetPicker(bool hasVideo) final;
</ins><span class="cx"> 
</span><del>-    Seconds eventThrottlingDelay() override;
</del><ins>+    Seconds eventThrottlingDelay() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ORIENTATION_EVENTS)
</span><del>-    int deviceOrientation() const override;
</del><ins>+    int deviceOrientation() const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void runOpenPanel(WebCore::Frame*, PassRefPtr&lt;WebCore::FileChooser&gt;) override;
-    void loadIconForFiles(const Vector&lt;String&gt;&amp;, WebCore::FileIconLoader&amp;) override;
</del><ins>+    void runOpenPanel(WebCore::Frame&amp;, WebCore::FileChooser&amp;) final;
+    void loadIconForFiles(const Vector&lt;String&gt;&amp;, WebCore::FileIconLoader&amp;) final;
</ins><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    void setCursor(const WebCore::Cursor&amp;) override;
-    void setCursorHiddenUntilMouseMoves(bool) override;
</del><ins>+    void setCursor(const WebCore::Cursor&amp;) final;
+    void setCursorHiddenUntilMouseMoves(bool) final;
</ins><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if !USE(REQUEST_ANIMATION_FRAME_TIMER)
</span><del>-    void scheduleAnimation() override;
</del><ins>+    void scheduleAnimation() final;
</ins><span class="cx"> #endif
</span><span class="cx">     
</span><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><del>-    bool requestPointerLock() override;
-    void requestPointerUnlock() override;
</del><ins>+    bool requestPointerLock() final;
+    void requestPointerUnlock() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void didAssociateFormControls(const Vector&lt;RefPtr&lt;WebCore::Element&gt;&gt;&amp;) override;
-    bool shouldNotifyOnFormChanges() override;
</del><ins>+    void didAssociateFormControls(const Vector&lt;RefPtr&lt;WebCore::Element&gt;&gt;&amp;) final;
+    bool shouldNotifyOnFormChanges() final;
</ins><span class="cx"> 
</span><del>-    bool selectItemWritingDirectionIsNatural() override;
-    bool selectItemAlignmentFollowsMenuWritingDirection() override;
-    bool hasOpenedPopup() const override;
-    RefPtr&lt;WebCore::PopupMenu&gt; createPopupMenu(WebCore::PopupMenuClient*) const override;
-    RefPtr&lt;WebCore::SearchPopupMenu&gt; createSearchPopupMenu(WebCore::PopupMenuClient*) const override;
</del><ins>+    bool selectItemWritingDirectionIsNatural() final;
+    bool selectItemAlignmentFollowsMenuWritingDirection() final;
+    bool hasOpenedPopup() const final;
+    RefPtr&lt;WebCore::PopupMenu&gt; createPopupMenu(WebCore::PopupMenuClient*) const final;
+    RefPtr&lt;WebCore::SearchPopupMenu&gt; createSearchPopupMenu(WebCore::PopupMenuClient*) const final;
</ins><span class="cx"> 
</span><del>-    WebCore::GraphicsLayerFactory* graphicsLayerFactory() const override;
-    void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
-    void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
-    void setNeedsOneShotDrawingSynchronization() override;
-    void scheduleCompositingLayerFlush() override;
-    bool adjustLayerFlushThrottling(WebCore::LayerFlushThrottleState::Flags) override;
</del><ins>+    WebCore::GraphicsLayerFactory* graphicsLayerFactory() const final;
+    void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) final;
+    void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) final;
+    void setNeedsOneShotDrawingSynchronization() final;
+    void scheduleCompositingLayerFlush() final;
+    bool adjustLayerFlushThrottling(WebCore::LayerFlushThrottleState::Flags) final;
</ins><span class="cx"> 
</span><span class="cx"> #if USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)
</span><del>-    RefPtr&lt;WebCore::DisplayRefreshMonitor&gt; createDisplayRefreshMonitor(WebCore::PlatformDisplayID) const override;
</del><ins>+    RefPtr&lt;WebCore::DisplayRefreshMonitor&gt; createDisplayRefreshMonitor(WebCore::PlatformDisplayID) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    CompositingTriggerFlags allowedCompositingTriggers() const override
</del><ins>+    CompositingTriggerFlags allowedCompositingTriggers() const final
</ins><span class="cx">     {
</span><span class="cx">         return static_cast&lt;CompositingTriggerFlags&gt;(
</span><span class="cx">             ThreeDTransformTrigger |
</span><span class="lines">@@ -230,119 +228,121 @@
</span><span class="cx">             AnimationTrigger);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool layerTreeStateIsFrozen() const override;
</del><ins>+    bool layerTreeStateIsFrozen() const final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(ASYNC_SCROLLING)
</span><del>-    PassRefPtr&lt;WebCore::ScrollingCoordinator&gt; createScrollingCoordinator(WebCore::Page*) const override;
</del><ins>+    PassRefPtr&lt;WebCore::ScrollingCoordinator&gt; createScrollingCoordinator(WebCore::Page*) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    void elementDidRefocus(const WebCore::Node*) override;
</del><ins>+    void elementDidRefocus(const WebCore::Node*) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if (PLATFORM(IOS) &amp;&amp; HAVE(AVKIT)) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
</span><del>-    bool supportsVideoFullscreen(WebCore::HTMLMediaElementEnums::VideoFullscreenMode) override;
-    void setUpPlaybackControlsManager(WebCore::HTMLMediaElement&amp;) override;
-    void clearPlaybackControlsManager() override;
-    void enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) override;
-    void exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;) override;
</del><ins>+    bool supportsVideoFullscreen(WebCore::HTMLMediaElementEnums::VideoFullscreenMode) final;
+    void setUpPlaybackControlsManager(WebCore::HTMLMediaElement&amp;) final;
+    void clearPlaybackControlsManager() final;
+    void enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) final;
+    void exitVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;) final;
+#endif
+
</ins><span class="cx"> #if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
</span><del>-    void exitVideoFullscreenToModeWithoutAnimation(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) override;
</del><ins>+    void exitVideoFullscreenToModeWithoutAnimation(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode) final;
</ins><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><del>-    bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) override;
-    void enterFullScreenForElement(WebCore::Element*) override;
-    void exitFullScreenForElement(WebCore::Element*) override;
</del><ins>+    bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) final;
+    void enterFullScreenForElement(WebCore::Element*) final;
+    void exitFullScreenForElement(WebCore::Element*) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    void elementDidFocus(const WebCore::Node*) override;
-    void elementDidBlur(const WebCore::Node*) override;
</del><ins>+    void elementDidFocus(const WebCore::Node*) final;
+    void elementDidBlur(const WebCore::Node*) final;
</ins><span class="cx"> 
</span><del>-    void makeFirstResponder() override;
</del><ins>+    void makeFirstResponder() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void enableSuddenTermination() override;
-    void disableSuddenTermination() override;
</del><ins>+    void enableSuddenTermination() final;
+    void disableSuddenTermination() final;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    WebCore::FloatSize screenSize() const override;
-    WebCore::FloatSize availableScreenSize() const override;
</del><ins>+    WebCore::FloatSize screenSize() const final;
+    WebCore::FloatSize availableScreenSize() const final;
</ins><span class="cx"> #endif
</span><del>-    void dispatchViewportPropertiesDidChange(const WebCore::ViewportArguments&amp;) const override;
</del><span class="cx"> 
</span><del>-    void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&amp;) override;
-    void recommendedScrollbarStyleDidChange(WebCore::ScrollbarStyle newStyle) override;
</del><ins>+    void dispatchViewportPropertiesDidChange(const WebCore::ViewportArguments&amp;) const final;
</ins><span class="cx"> 
</span><del>-    std::optional&lt;WebCore::ScrollbarOverlayStyle&gt; preferredScrollbarOverlayStyle() override;
</del><ins>+    void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&amp;) final;
+    void recommendedScrollbarStyleDidChange(WebCore::ScrollbarStyle newStyle) final;
</ins><span class="cx"> 
</span><del>-    WebCore::Color underlayColor() const override;
</del><ins>+    std::optional&lt;WebCore::ScrollbarOverlayStyle&gt; preferredScrollbarOverlayStyle() final;
</ins><span class="cx"> 
</span><del>-    void pageExtendedBackgroundColorDidChange(WebCore::Color) const override;
</del><ins>+    WebCore::Color underlayColor() const final;
+
+    void pageExtendedBackgroundColorDidChange(WebCore::Color) const final;
</ins><span class="cx">     
</span><del>-    void wheelEventHandlersChanged(bool) override;
</del><ins>+    void wheelEventHandlersChanged(bool) final;
</ins><span class="cx"> 
</span><del>-    String plugInStartLabelTitle(const String&amp; mimeType) const override;
-    String plugInStartLabelSubtitle(const String&amp; mimeType) const override;
-    String plugInExtraStyleSheet() const override;
-    String plugInExtraScript() const override;
</del><ins>+    String plugInStartLabelTitle(const String&amp; mimeType) const final;
+    String plugInStartLabelSubtitle(const String&amp; mimeType) const final;
+    String plugInExtraStyleSheet() const final;
+    String plugInExtraScript() const final;
</ins><span class="cx"> 
</span><del>-    void didAddHeaderLayer(WebCore::GraphicsLayer*) override;
-    void didAddFooterLayer(WebCore::GraphicsLayer*) override;
</del><ins>+    void didAddHeaderLayer(WebCore::GraphicsLayer*) final;
+    void didAddFooterLayer(WebCore::GraphicsLayer*) final;
</ins><span class="cx"> 
</span><del>-    bool shouldUseTiledBackingForFrameView(const WebCore::FrameView*) const override;
</del><ins>+    bool shouldUseTiledBackingForFrameView(const WebCore::FrameView*) const final;
</ins><span class="cx"> 
</span><del>-    void isPlayingMediaDidChange(WebCore::MediaProducer::MediaStateFlags, uint64_t) override;
</del><ins>+    void isPlayingMediaDidChange(WebCore::MediaProducer::MediaStateFlags, uint64_t) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><del>-    void hasMediaSessionWithActiveMediaElementsDidChange(bool) override;
-    void mediaSessionMetadataDidChange(const WebCore::MediaSessionMetadata&amp;) override;
-    void focusedContentMediaElementDidChange(uint64_t) override;
</del><ins>+    void hasMediaSessionWithActiveMediaElementsDidChange(bool) final;
+    void mediaSessionMetadataDidChange(const WebCore::MediaSessionMetadata&amp;) final;
+    void focusedContentMediaElementDidChange(uint64_t) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><del>-    bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const override;
-    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const override;
</del><ins>+    bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const final;
+    bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TELEPHONE_NUMBER_DETECTION) &amp;&amp; PLATFORM(MAC)
</span><del>-    void handleTelephoneNumberClick(const String&amp; number, const WebCore::IntPoint&amp;) override;
</del><ins>+    void handleTelephoneNumberClick(const String&amp; number, const WebCore::IntPoint&amp;) final;
</ins><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if ENABLE(SERVICE_CONTROLS)
</span><del>-    void handleSelectionServiceClick(WebCore::FrameSelection&amp;, const Vector&lt;String&gt;&amp; telephoneNumbers, const WebCore::IntPoint&amp;) override;
-    bool hasRelevantSelectionServices(bool isTextOnly) const override;
</del><ins>+    void handleSelectionServiceClick(WebCore::FrameSelection&amp;, const Vector&lt;String&gt;&amp; telephoneNumbers, const WebCore::IntPoint&amp;) final;
+    bool hasRelevantSelectionServices(bool isTextOnly) const final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool shouldDispatchFakeMouseMoveEvents() const override;
</del><ins>+    bool shouldDispatchFakeMouseMoveEvents() const final;
</ins><span class="cx"> 
</span><del>-    void handleAutoFillButtonClick(WebCore::HTMLInputElement&amp;) override;
</del><ins>+    void handleAutoFillButtonClick(WebCore::HTMLInputElement&amp;) final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    void addPlaybackTargetPickerClient(uint64_t /*contextId*/) override;
-    void removePlaybackTargetPickerClient(uint64_t /*contextId*/) override;
-    void showPlaybackTargetPicker(uint64_t contextId, const WebCore::IntPoint&amp;, bool) override;
-    void playbackTargetPickerClientStateDidChange(uint64_t, WebCore::MediaProducer::MediaStateFlags) override;
-    void setMockMediaPlaybackTargetPickerEnabled(bool) override;
-    void setMockMediaPlaybackTargetPickerState(const String&amp;, WebCore::MediaPlaybackTargetContext::State) override;
</del><ins>+    void addPlaybackTargetPickerClient(uint64_t /*contextId*/) final;
+    void removePlaybackTargetPickerClient(uint64_t /*contextId*/) final;
+    void showPlaybackTargetPicker(uint64_t contextId, const WebCore::IntPoint&amp;, bool) final;
+    void playbackTargetPickerClientStateDidChange(uint64_t, WebCore::MediaProducer::MediaStateFlags) final;
+    void setMockMediaPlaybackTargetPickerEnabled(bool) final;
+    void setMockMediaPlaybackTargetPickerState(const String&amp;, WebCore::MediaPlaybackTargetContext::State) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void imageOrMediaDocumentSizeChanged(const WebCore::IntSize&amp;) override;
-#if ENABLE(VIDEO)
-#if USE(GSTREAMER)
-    void requestInstallMissingMediaPlugins(const String&amp; /*details*/, const String&amp; /*description*/, WebCore::MediaPlayerRequestInstallMissingPluginsCallback&amp;) override;
</del><ins>+    void imageOrMediaDocumentSizeChanged(const WebCore::IntSize&amp;) final;
+
+#if ENABLE(VIDEO) &amp;&amp; USE(GSTREAMER)
+    void requestInstallMissingMediaPlugins(const String&amp; /*details*/, const String&amp; /*description*/, WebCore::MediaPlayerRequestInstallMissingPluginsCallback&amp;) final;
</ins><span class="cx"> #endif
</span><del>-#endif
</del><span class="cx"> 
</span><del>-    void didInvalidateDocumentMarkerRects() override;
</del><ins>+    void didInvalidateDocumentMarkerRects() final;
</ins><span class="cx"> 
</span><span class="cx">     String m_cachedToolTip;
</span><span class="cx">     mutable RefPtr&lt;WebFrame&gt; m_cachedFrameSetLargestFrame;
</span><del>-    mutable bool m_cachedMainFrameHasHorizontalScrollbar;
-    mutable bool m_cachedMainFrameHasVerticalScrollbar;
</del><ins>+    mutable bool m_cachedMainFrameHasHorizontalScrollbar { false };
+    mutable bool m_cachedMainFrameHasVerticalScrollbar { false };
</ins><span class="cx"> 
</span><del>-    WebPage* m_page;
</del><ins>+    WebPage&amp; m_page;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebEditorClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -238,7 +238,7 @@
</span><span class="cx">     m_page-&gt;injectedBundleEditorClient().getPasteboardDataForRange(*m_page, range, pasteboardTypes, pasteboardData);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerUndoStep(PassRefPtr&lt;UndoStep&gt; step)
</del><ins>+void WebEditorClient::registerUndoStep(UndoStep&amp; step)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: Add assertion that the command being reapplied is the same command that is
</span><span class="cx">     // being passed to us.
</span><span class="lines">@@ -245,14 +245,14 @@
</span><span class="cx">     if (m_page-&gt;isInRedo())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;WebUndoStep&gt; webStep = WebUndoStep::create(step);
-    m_page-&gt;addWebUndoStep(webStep-&gt;stepID(), webStep.get());
-    uint32_t editAction = static_cast&lt;uint32_t&gt;(webStep-&gt;step()-&gt;editingAction());
</del><ins>+    auto webStep = WebUndoStep::create(&amp;step);
+    auto editAction = static_cast&lt;uint32_t&gt;(webStep-&gt;step()-&gt;editingAction());
</ins><span class="cx"> 
</span><ins>+    m_page-&gt;addWebUndoStep(webStep-&gt;stepID(), webStep.ptr());
</ins><span class="cx">     m_page-&gt;send(Messages::WebPageProxy::RegisterEditCommandForUndo(webStep-&gt;stepID(), editAction));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebEditorClient::registerRedoStep(PassRefPtr&lt;UndoStep&gt;)
</del><ins>+void WebEditorClient::registerRedoStep(UndoStep&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebEditorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -71,8 +71,8 @@
</span><span class="cx">     void didWriteSelectionToPasteboard() final;
</span><span class="cx">     void getClientPasteboardDataForRange(WebCore::Range*, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;WebCore::SharedBuffer&gt;&gt;&amp; pasteboardData) final;
</span><span class="cx">     
</span><del>-    void registerUndoStep(PassRefPtr&lt;WebCore::UndoStep&gt;) final;
-    void registerRedoStep(PassRefPtr&lt;WebCore::UndoStep&gt;) final;
</del><ins>+    void registerUndoStep(WebCore::UndoStep&amp;) final;
+    void registerRedoStep(WebCore::UndoStep&amp;) final;
</ins><span class="cx">     void clearUndoRedoOperations() final;
</span><span class="cx"> 
</span><span class="cx">     bool canCopyCut(WebCore::Frame*, bool defaultValue) const final;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -701,7 +701,7 @@
</span><span class="cx">         m_frame-&gt;didReceivePolicyDecision(listenerID, static_cast&lt;PolicyAction&gt;(policyAction), 0, downloadID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; navigationAction, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; formState, const String&amp; frameName, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&amp; navigationAction, const ResourceRequest&amp; request, FormState* formState, const String&amp; frameName, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebPage* webPage = m_frame-&gt;page();
</span><span class="cx">     if (!webPage) {
</span><span class="lines">@@ -737,7 +737,7 @@
</span><span class="cx">     webPage-&gt;send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame-&gt;frameID(), SecurityOriginData::fromFrame(coreFrame), navigationActionData, request, frameName, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; navigationAction, const ResourceRequest&amp; request, PassRefPtr&lt;FormState&gt; prpFormState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&amp; navigationAction, const ResourceRequest&amp; request, FormState* formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebPage* webPage = m_frame-&gt;page();
</span><span class="cx">     if (!webPage) {
</span><span class="lines">@@ -752,7 +752,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><del>-    RefPtr&lt;FormState&gt; formState = prpFormState;
</del><span class="cx"> 
</span><span class="cx">     RefPtr&lt;InjectedBundleNavigationAction&gt; action = InjectedBundleNavigationAction::create(m_frame, navigationAction, formState);
</span><span class="cx"> 
</span><span class="lines">@@ -782,7 +781,7 @@
</span><span class="cx">     case NavigationType::FormSubmitted:
</span><span class="cx">     case NavigationType::FormResubmitted:
</span><span class="cx">         if (formState)
</span><del>-            originatingFrame = WebFrame::fromCoreFrame(*formState-&gt;sourceDocument()-&gt;frame());
</del><ins>+            originatingFrame = WebFrame::fromCoreFrame(*formState-&gt;sourceDocument().frame());
</ins><span class="cx">         break;
</span><span class="cx">     case NavigationType::BackForward:
</span><span class="cx">     case NavigationType::Reload:
</span><span class="lines">@@ -843,41 +842,37 @@
</span><span class="cx">     webPage-&gt;send(Messages::WebPageProxy::UnableToImplementPolicy(m_frame-&gt;frameID(), error, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr&lt;FormState&gt; prpFormState)
</del><ins>+void WebFrameLoaderClient::dispatchWillSendSubmitEvent(Ref&lt;FormState&gt;&amp;&amp; formState)
</ins><span class="cx"> {
</span><del>-    WebPage* webPage = m_frame-&gt;page();
</del><ins>+    auto* webPage = m_frame-&gt;page();
</ins><span class="cx">     if (!webPage)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;FormState&gt; formState = prpFormState;
-    HTMLFormElement* form = formState-&gt;form();
</del><ins>+    auto&amp; form = formState-&gt;form();
</ins><span class="cx"> 
</span><del>-    WebFrame* sourceFrame = WebFrame::fromCoreFrame(*formState-&gt;sourceDocument()-&gt;frame());
</del><ins>+    ASSERT(formState-&gt;sourceDocument().frame());
+    auto* sourceFrame = WebFrame::fromCoreFrame(*formState-&gt;sourceDocument().frame());
</ins><span class="cx">     ASSERT(sourceFrame);
</span><span class="cx"> 
</span><del>-    webPage-&gt;injectedBundleFormClient().willSendSubmitEvent(webPage, form, m_frame, sourceFrame, formState-&gt;textFieldValues());
</del><ins>+    webPage-&gt;injectedBundleFormClient().willSendSubmitEvent(webPage, &amp;form, m_frame, sourceFrame, formState-&gt;textFieldValues());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebFrameLoaderClient::dispatchWillSubmitForm(PassRefPtr&lt;FormState&gt; prpFormState, FramePolicyFunction function)
</del><ins>+void WebFrameLoaderClient::dispatchWillSubmitForm(FormState&amp; formState, FramePolicyFunction function)
</ins><span class="cx"> {
</span><span class="cx">     WebPage* webPage = m_frame-&gt;page();
</span><span class="cx">     if (!webPage)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: Pass more of the form state.
-    RefPtr&lt;FormState&gt; formState = prpFormState;
-    
-    HTMLFormElement* form = formState-&gt;form();
</del><ins>+    auto&amp; form = formState.form();
</ins><span class="cx"> 
</span><del>-    WebFrame* sourceFrame = WebFrame::fromCoreFrame(*formState-&gt;sourceDocument()-&gt;frame());
</del><ins>+    auto* sourceFrame = WebFrame::fromCoreFrame(*formState.sourceDocument().frame());
</ins><span class="cx">     ASSERT(sourceFrame);
</span><span class="cx"> 
</span><del>-    const Vector&lt;std::pair&lt;String, String&gt;&gt;&amp; values = formState-&gt;textFieldValues();
</del><ins>+    auto&amp; values = formState.textFieldValues();
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><del>-    webPage-&gt;injectedBundleFormClient().willSubmitForm(webPage, form, m_frame, sourceFrame, values, userData);
</del><ins>+    webPage-&gt;injectedBundleFormClient().willSubmitForm(webPage, &amp;form, m_frame, sourceFrame, values, userData);
</ins><span class="cx"> 
</span><del>-
</del><span class="cx">     uint64_t listenerID = m_frame-&gt;setUpPolicyListener(WTFMove(function));
</span><span class="cx"> 
</span><span class="cx">     webPage-&gt;send(Messages::WebPageProxy::WillSubmitForm(m_frame-&gt;frameID(), sourceFrame-&gt;frameID(), values, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
</span><span class="lines">@@ -1400,14 +1395,13 @@
</span><span class="cx">     m_frame-&gt;convertMainResourceLoadToDownload(documentLoader, sessionID, request, response);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement* ownerElement,
-                                                    const String&amp; referrer, bool /*allowsScrolling*/, int /*marginWidth*/, int /*marginHeight*/)
</del><ins>+RefPtr&lt;Frame&gt; WebFrameLoaderClient::createFrame(const URL&amp; url, const String&amp; name, HTMLFrameOwnerElement&amp; ownerElement,
+    const String&amp; referrer, bool /*allowsScrolling*/, int /*marginWidth*/, int /*marginHeight*/)
</ins><span class="cx"> {
</span><del>-    WebPage* webPage = m_frame-&gt;page();
</del><ins>+    auto* webPage = m_frame-&gt;page();
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;WebFrame&gt; subframe = WebFrame::createSubframe(webPage, name, ownerElement);
-
-    Frame* coreSubframe = subframe-&gt;coreFrame();
</del><ins>+    auto subframe = WebFrame::createSubframe(webPage, name, &amp;ownerElement);
+    auto* coreSubframe = subframe-&gt;coreFrame();
</ins><span class="cx">     if (!coreSubframe)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="lines">@@ -1427,7 +1421,7 @@
</span><span class="cx">     return coreSubframe;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp;, HTMLPlugInElement* pluginElement, const URL&amp; url, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; mimeType, bool loadManually)
</del><ins>+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createPlugin(const IntSize&amp;, HTMLPlugInElement&amp; pluginElement, const URL&amp; url, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, const String&amp; mimeType, bool loadManually)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(paramNames.size() == paramValues.size());
</span><span class="cx">     ASSERT(m_frame-&gt;page());
</span><span class="lines">@@ -1444,11 +1438,11 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-    auto plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginElement, parameters, parameters.mimeType);
</del><ins>+    auto plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, &amp;pluginElement, parameters, parameters.mimeType);
</ins><span class="cx">     if (!plugin)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    return PluginView::create(pluginElement, WTFMove(plugin), parameters);
</del><ins>+    return PluginView::create(pluginElement, plugin.releaseNonNull(), parameters);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(pluginElement);
</span><span class="cx">     return nullptr;
</span><span class="lines">@@ -1458,13 +1452,14 @@
</span><span class="cx"> void WebFrameLoaderClient::recreatePlugin(Widget* widget)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-    ASSERT(widget &amp;&amp; widget-&gt;isPluginViewBase());
</del><ins>+    ASSERT(widget);
+    ASSERT(widget-&gt;isPluginViewBase());
</ins><span class="cx">     ASSERT(m_frame-&gt;page());
</span><span class="cx"> 
</span><del>-    PluginView* pluginView = static_cast&lt;PluginView*&gt;(widget);
</del><ins>+    auto&amp; pluginView = static_cast&lt;PluginView&amp;&gt;(*widget);
</ins><span class="cx">     String newMIMEType;
</span><del>-    auto plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginView-&gt;pluginElement(), pluginView-&gt;initialParameters(), newMIMEType);
-    pluginView-&gt;recreateAndInitialize(WTFMove(plugin));
</del><ins>+    auto plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginView.pluginElement(), pluginView.initialParameters(), newMIMEType);
+    pluginView.recreateAndInitialize(plugin.releaseNonNull());
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(widget);
</span><span class="cx"> #endif
</span><span class="lines">@@ -1477,9 +1472,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><ins>+
</ins><span class="cx"> WebCore::WebGLLoadPolicy WebFrameLoaderClient::webGLPolicyForURL(const String&amp; url) const
</span><span class="cx"> {
</span><del>-    if (WebPage* webPage = m_frame-&gt;page())
</del><ins>+    if (auto* webPage = m_frame-&gt;page())
</ins><span class="cx">         return webPage-&gt;webGLPolicyForURL(m_frame, url);
</span><span class="cx"> 
</span><span class="cx">     return WebGLAllowCreation;
</span><span class="lines">@@ -1487,31 +1483,32 @@
</span><span class="cx"> 
</span><span class="cx"> WebCore::WebGLLoadPolicy WebFrameLoaderClient::resolveWebGLPolicyForURL(const String&amp; url) const
</span><span class="cx"> {
</span><del>-    if (WebPage* webPage = m_frame-&gt;page())
</del><ins>+    if (auto* webPage = m_frame-&gt;page())
</ins><span class="cx">         return webPage-&gt;resolveWebGLPolicyForURL(m_frame, url);
</span><span class="cx"> 
</span><span class="cx">     return WebGLAllowCreation;
</span><span class="cx"> }
</span><del>-#endif // ENABLE(WEBGL)
</del><span class="cx"> 
</span><del>-PassRefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; pluginSize, HTMLAppletElement* appletElement, const URL&amp;, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</del><ins>+#endif
+
+RefPtr&lt;Widget&gt; WebFrameLoaderClient::createJavaAppletWidget(const IntSize&amp; pluginSize, HTMLAppletElement&amp; appletElement, const URL&amp;, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues)
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-    auto plugin = createPlugin(pluginSize, appletElement, URL(), paramNames, paramValues, appletElement-&gt;serviceType(), false);
</del><ins>+    auto plugin = createPlugin(pluginSize, appletElement, URL(), paramNames, paramValues, appletElement.serviceType(), false);
</ins><span class="cx">     if (!plugin) {
</span><del>-        if (WebPage* webPage = m_frame-&gt;page()) {
-            String frameURLString = m_frame-&gt;coreFrame()-&gt;loader().documentLoader()-&gt;responseURL().string();
-            String pageURLString = webPage-&gt;corePage()-&gt;mainFrame().loader().documentLoader()-&gt;responseURL().string();
-            webPage-&gt;send(Messages::WebPageProxy::DidFailToInitializePlugin(appletElement-&gt;serviceType(), frameURLString, pageURLString));
</del><ins>+        if (auto* webPage = m_frame-&gt;page()) {
+            auto frameURLString = m_frame-&gt;coreFrame()-&gt;loader().documentLoader()-&gt;responseURL().string();
+            auto pageURLString = webPage-&gt;corePage()-&gt;mainFrame().loader().documentLoader()-&gt;responseURL().string();
+            webPage-&gt;send(Messages::WebPageProxy::DidFailToInitializePlugin(appletElement.serviceType(), frameURLString, pageURLString));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><del>-    return WTFMove(plugin);
</del><ins>+    return plugin;
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(pluginSize);
</span><span class="cx">     UNUSED_PARAM(appletElement);
</span><span class="cx">     UNUSED_PARAM(paramNames);
</span><span class="cx">     UNUSED_PARAM(paramValues);
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1717,13 +1714,13 @@
</span><span class="cx">     return webPage-&gt;injectedBundleLoaderClient().shouldForceUniversalAccessFromLocalURL(webPage, url.string());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</del><ins>+Ref&lt;FrameNetworkingContext&gt; WebFrameLoaderClient::createNetworkingContext()
</ins><span class="cx"> {
</span><del>-    auto context = WebFrameNetworkingContext::create(m_frame);
-    return WTFMove(context);
</del><ins>+    return WebFrameNetworkingContext::create(m_frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_FILTERING)
</span><ins>+
</ins><span class="cx"> void WebFrameLoaderClient::contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler unblockHandler)
</span><span class="cx"> {
</span><span class="cx">     if (!unblockHandler.needsUIProcess()) {
</span><span class="lines">@@ -1734,12 +1731,15 @@
</span><span class="cx">     if (WebPage* webPage { m_frame-&gt;page() })
</span><span class="cx">         webPage-&gt;send(Messages::WebPageProxy::ContentFilterDidBlockLoadForFrame(unblockHandler, m_frame-&gt;frameID()));
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(REQUEST_AUTOCOMPLETE)
</span><del>-void WebFrameLoaderClient::didRequestAutocomplete(PassRefPtr&lt;WebCore::FormState&gt;)
</del><ins>+
+void WebFrameLoaderClient::didRequestAutocomplete(Ref&lt;WebCore::FormState&gt;&amp;&amp;)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebFrameLoaderClient::prefetchDNS(const String&amp; hostname)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> class PluginView;
</span><span class="cx"> class WebFrame;
</span><span class="cx">     
</span><del>-class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
</del><ins>+class WebFrameLoaderClient final : public WebCore::FrameLoaderClient {
</ins><span class="cx"> public:
</span><span class="cx">     WebFrameLoaderClient();
</span><span class="cx">     ~WebFrameLoaderClient();
</span><span class="lines">@@ -49,217 +49,216 @@
</span><span class="cx">     void setUseIconLoadingClient(bool useIconLoadingClient) { m_useIconLoadingClient = useIconLoadingClient; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void frameLoaderDestroyed() override;
</del><ins>+    void frameLoaderDestroyed() final;
</ins><span class="cx"> 
</span><del>-    bool hasHTMLView() const override;
-    bool hasWebView() const override;
</del><ins>+    bool hasHTMLView() const final;
+    bool hasWebView() const final;
</ins><span class="cx">     
</span><del>-    void makeRepresentation(WebCore::DocumentLoader*) override;
</del><ins>+    void makeRepresentation(WebCore::DocumentLoader*) final;
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    bool forceLayoutOnRestoreFromPageCache() override;
</del><ins>+    bool forceLayoutOnRestoreFromPageCache() final;
</ins><span class="cx"> #endif
</span><del>-    void forceLayoutForNonHTML() override;
</del><ins>+    void forceLayoutForNonHTML() final;
</ins><span class="cx">     
</span><del>-    void setCopiesOnScroll() override;
</del><ins>+    void setCopiesOnScroll() final;
</ins><span class="cx">     
</span><del>-    void detachedFromParent2() override;
-    void detachedFromParent3() override;
</del><ins>+    void detachedFromParent2() final;
+    void detachedFromParent3() final;
</ins><span class="cx">     
</span><del>-    void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;) override;
</del><ins>+    void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx">     
</span><del>-    void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse) override;
-    bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
-    void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&amp;) override;
</del><ins>+    void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp; redirectResponse) final;
+    bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) final;
+    void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&amp;) final;
</ins><span class="cx"> #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</span><del>-    bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&amp;) override;
</del><ins>+    bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    RetainPtr&lt;CFDictionaryRef&gt; connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) override;
</del><ins>+    RetainPtr&lt;CFDictionaryRef&gt; connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) final;
</ins><span class="cx"> #endif
</span><del>-    void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;) override;
-    void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
-    void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
-    void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&amp;) override;
-    bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;, int length) override;
</del><ins>+    void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&amp;) final;
+    void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) final;
+    void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) final;
+    void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&amp;) final;
+    bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;, int length) final;
</ins><span class="cx"> #if ENABLE(DATA_DETECTION)
</span><del>-    void dispatchDidFinishDataDetection(NSArray *detectionResults) override;
</del><ins>+    void dispatchDidFinishDataDetection(NSArray *detectionResults) final;
</ins><span class="cx"> #endif
</span><span class="cx">     
</span><del>-    void dispatchDidDispatchOnloadEvents() override;
-    void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
-    void dispatchDidChangeProvisionalURL() override;
-    void dispatchDidCancelClientRedirect() override;
-    void dispatchWillPerformClientRedirect(const WebCore::URL&amp;, double interval, double fireDate) override;
-    void dispatchDidChangeLocationWithinPage() override;
-    void dispatchDidPushStateWithinPage() override;
-    void dispatchDidReplaceStateWithinPage() override;
-    void dispatchDidPopStateWithinPage() override;
-    void dispatchWillClose() override;
-    void dispatchDidReceiveIcon() override;
-    void dispatchDidStartProvisionalLoad() override;
-    void dispatchDidReceiveTitle(const WebCore::StringWithDirection&amp;) override;
-    void dispatchDidCommitLoad(std::optional&lt;WebCore::HasInsecureContent&gt;) override;
-    void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&amp;) override;
-    void dispatchDidFailLoad(const WebCore::ResourceError&amp;) override;
-    void dispatchDidFinishDocumentLoad() override;
-    void dispatchDidFinishLoad() override;
</del><ins>+    void dispatchDidDispatchOnloadEvents() final;
+    void dispatchDidReceiveServerRedirectForProvisionalLoad() final;
+    void dispatchDidChangeProvisionalURL() final;
+    void dispatchDidCancelClientRedirect() final;
+    void dispatchWillPerformClientRedirect(const WebCore::URL&amp;, double interval, double fireDate) final;
+    void dispatchDidChangeLocationWithinPage() final;
+    void dispatchDidPushStateWithinPage() final;
+    void dispatchDidReplaceStateWithinPage() final;
+    void dispatchDidPopStateWithinPage() final;
+    void dispatchWillClose() final;
+    void dispatchDidReceiveIcon() final;
+    void dispatchDidStartProvisionalLoad() final;
+    void dispatchDidReceiveTitle(const WebCore::StringWithDirection&amp;) final;
+    void dispatchDidCommitLoad(std::optional&lt;WebCore::HasInsecureContent&gt;) final;
+    void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&amp;) final;
+    void dispatchDidFailLoad(const WebCore::ResourceError&amp;) final;
+    void dispatchDidFinishDocumentLoad() final;
+    void dispatchDidFinishLoad() final;
</ins><span class="cx"> 
</span><del>-    void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) override;
-    void dispatchDidLayout() override;
</del><ins>+    void dispatchDidReachLayoutMilestone(WebCore::LayoutMilestones) final;
+    void dispatchDidLayout() final;
</ins><span class="cx"> 
</span><del>-    WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) override;
-    void dispatchShow() override;
</del><ins>+    WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&amp;) final;
+    void dispatchShow() final;
</ins><span class="cx">     
</span><del>-    void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, WebCore::FramePolicyFunction) override;
-    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, const String&amp; frameName, WebCore::FramePolicyFunction) override;
-    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
-    void cancelPolicyCheck() override;
</del><ins>+    void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&amp;, const WebCore::ResourceRequest&amp;, WebCore::FramePolicyFunction) final;
+    void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, const String&amp; frameName, WebCore::FramePolicyFunction) final;
+    void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&amp;, const WebCore::ResourceRequest&amp;, WebCore::FormState*, WebCore::FramePolicyFunction) final;
+    void cancelPolicyCheck() final;
</ins><span class="cx">     
</span><del>-    void dispatchUnableToImplementPolicy(const WebCore::ResourceError&amp;) override;
</del><ins>+    void dispatchUnableToImplementPolicy(const WebCore::ResourceError&amp;) final;
</ins><span class="cx">     
</span><del>-    void dispatchWillSendSubmitEvent(PassRefPtr&lt;WebCore::FormState&gt;) override;
-    void dispatchWillSubmitForm(PassRefPtr&lt;WebCore::FormState&gt;, WebCore::FramePolicyFunction) override;
</del><ins>+    void dispatchWillSendSubmitEvent(Ref&lt;WebCore::FormState&gt;&amp;&amp;) final;
+    void dispatchWillSubmitForm(WebCore::FormState&amp;, WebCore::FramePolicyFunction) final;
</ins><span class="cx">     
</span><del>-    void revertToProvisionalState(WebCore::DocumentLoader*) override;
-    void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&amp;) override;
</del><ins>+    void revertToProvisionalState(WebCore::DocumentLoader*) final;
+    void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&amp;) final;
</ins><span class="cx">     
</span><del>-    void setMainFrameDocumentReady(bool) override;
</del><ins>+    void setMainFrameDocumentReady(bool) final;
</ins><span class="cx">     
</span><del>-    void startDownload(const WebCore::ResourceRequest&amp;, const String&amp; suggestedName = String()) override;
</del><ins>+    void startDownload(const WebCore::ResourceRequest&amp;, const String&amp; suggestedName = String()) final;
</ins><span class="cx">     
</span><del>-    void willChangeTitle(WebCore::DocumentLoader*) override;
-    void didChangeTitle(WebCore::DocumentLoader*) override;
</del><ins>+    void willChangeTitle(WebCore::DocumentLoader*) final;
+    void didChangeTitle(WebCore::DocumentLoader*) final;
</ins><span class="cx"> 
</span><del>-    void willReplaceMultipartContent() override;
-    void didReplaceMultipartContent() override;
</del><ins>+    void willReplaceMultipartContent() final;
+    void didReplaceMultipartContent() final;
</ins><span class="cx"> 
</span><del>-    void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
-    void finishedLoading(WebCore::DocumentLoader*) override;
</del><ins>+    void committedLoad(WebCore::DocumentLoader*, const char*, int) final;
+    void finishedLoading(WebCore::DocumentLoader*) final;
</ins><span class="cx">     
</span><del>-    void updateGlobalHistory() override;
-    void updateGlobalHistoryRedirectLinks() override;
</del><ins>+    void updateGlobalHistory() final;
+    void updateGlobalHistoryRedirectLinks() final;
</ins><span class="cx">     
</span><del>-    bool shouldGoToHistoryItem(WebCore::HistoryItem*) const override;
</del><ins>+    bool shouldGoToHistoryItem(WebCore::HistoryItem*) const final;
</ins><span class="cx"> 
</span><del>-    void didDisplayInsecureContent() override;
-    void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&amp;) override;
-    void didDetectXSS(const WebCore::URL&amp;, bool didBlockEntirePage) override;
</del><ins>+    void didDisplayInsecureContent() final;
+    void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&amp;) final;
+    void didDetectXSS(const WebCore::URL&amp;, bool didBlockEntirePage) final;
</ins><span class="cx"> 
</span><del>-    WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError blockedError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&amp;) override;
-    WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&amp;) override;
</del><ins>+    WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError blockedError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&amp;) final;
+    WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx"> #if ENABLE(CONTENT_FILTERING)
</span><del>-    WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&amp;) override;
</del><ins>+    WebCore::ResourceError blockedByContentFilterError(const WebCore::ResourceRequest&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx">     
</span><del>-    WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&amp;) override;
-    WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&amp;) override;
-    WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&amp;) override;
</del><ins>+    WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&amp;) final;
+    WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&amp;) final;
+    WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&amp;) final;
</ins><span class="cx">     
</span><del>-    bool shouldFallBack(const WebCore::ResourceError&amp;) override;
</del><ins>+    bool shouldFallBack(const WebCore::ResourceError&amp;) final;
</ins><span class="cx">     
</span><del>-    bool canHandleRequest(const WebCore::ResourceRequest&amp;) const override;
-    bool canShowMIMEType(const String&amp; MIMEType) const override;
-    bool canShowMIMETypeAsHTML(const String&amp; MIMEType) const override;
-    bool representationExistsForURLScheme(const String&amp; URLScheme) const override;
-    String generatedMIMETypeForURLScheme(const String&amp; URLScheme) const override;
</del><ins>+    bool canHandleRequest(const WebCore::ResourceRequest&amp;) const final;
+    bool canShowMIMEType(const String&amp; MIMEType) const final;
+    bool canShowMIMETypeAsHTML(const String&amp; MIMEType) const final;
+    bool representationExistsForURLScheme(const String&amp; URLScheme) const final;
+    String generatedMIMETypeForURLScheme(const String&amp; URLScheme) const final;
</ins><span class="cx">     
</span><del>-    void frameLoadCompleted() override;
-    void saveViewStateToItem(WebCore::HistoryItem&amp;) override;
-    void restoreViewState() override;
-    void provisionalLoadStarted() override;
-    void didFinishLoad() override;
-    void prepareForDataSourceReplacement() override;
</del><ins>+    void frameLoadCompleted() final;
+    void saveViewStateToItem(WebCore::HistoryItem&amp;) final;
+    void restoreViewState() final;
+    void provisionalLoadStarted() final;
+    void didFinishLoad() final;
+    void prepareForDataSourceReplacement() final;
</ins><span class="cx">     
</span><del>-    Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;) override;
-    void updateCachedDocumentLoader(WebCore::DocumentLoader&amp;) override;
</del><ins>+    Ref&lt;WebCore::DocumentLoader&gt; createDocumentLoader(const WebCore::ResourceRequest&amp;, const WebCore::SubstituteData&amp;) final;
+    void updateCachedDocumentLoader(WebCore::DocumentLoader&amp;) final;
</ins><span class="cx"> 
</span><del>-    void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;) override;
</del><ins>+    void setTitle(const WebCore::StringWithDirection&amp;, const WebCore::URL&amp;) final;
</ins><span class="cx">     
</span><del>-    String userAgent(const WebCore::URL&amp;) override;
</del><ins>+    String userAgent(const WebCore::URL&amp;) final;
</ins><span class="cx">     
</span><del>-    void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
-    void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
</del><ins>+    void savePlatformDataToCachedFrame(WebCore::CachedFrame*) final;
+    void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) final;
</ins><span class="cx"> #if PLATFORM(IOS)
</span><del>-    void didRestoreFrameHierarchyForCachedFrame() override;
</del><ins>+    void didRestoreFrameHierarchyForCachedFrame() final;
</ins><span class="cx"> #endif
</span><del>-    void transitionToCommittedForNewPage() override;
</del><ins>+    void transitionToCommittedForNewPage() final;
</ins><span class="cx"> 
</span><del>-    void didSaveToPageCache() override;
-    void didRestoreFromPageCache() override;
</del><ins>+    void didSaveToPageCache() final;
+    void didRestoreFromPageCache() final;
</ins><span class="cx"> 
</span><del>-    void dispatchDidBecomeFrameset(bool) override;
</del><ins>+    void dispatchDidBecomeFrameset(bool) final;
</ins><span class="cx"> 
</span><del>-    bool canCachePage() const override;
-    void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;) override;
</del><ins>+    bool canCachePage() const final;
+    void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;) final;
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const String&amp; name, WebCore::HTMLFrameOwnerElement*,
-                                          const String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
</del><ins>+    RefPtr&lt;WebCore::Frame&gt; createFrame(const WebCore::URL&amp;, const String&amp; name, WebCore::HTMLFrameOwnerElement&amp;, const String&amp; referrer, bool allowsScrolling, int marginWidth, int marginHeight) final;
+
+    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement&amp;, const WebCore::URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool loadManually) final;
+    void recreatePlugin(WebCore::Widget*) final;
+    void redirectDataToPlugin(WebCore::Widget* pluginWidget) final;
</ins><span class="cx">     
</span><del>-    RefPtr&lt;WebCore::Widget&gt; createPlugin(const WebCore::IntSize&amp;, WebCore::HTMLPlugInElement*, const WebCore::URL&amp;, const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;, bool loadManually) override;
-    void recreatePlugin(WebCore::Widget*) override;
-    void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
-    
</del><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&amp;) const override;
-    WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&amp;) const override;
</del><ins>+    WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&amp;) const final;
+    WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&amp;) const final;
</ins><span class="cx"> #endif // ENABLE(WEBGL)
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement*, const WebCore::URL&amp; baseURL, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues) override;
</del><ins>+    RefPtr&lt;WebCore::Widget&gt; createJavaAppletWidget(const WebCore::IntSize&amp;, WebCore::HTMLAppletElement&amp;, const WebCore::URL&amp; baseURL, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues) final;
</ins><span class="cx">     
</span><del>-    WebCore::ObjectContentType objectContentType(const WebCore::URL&amp;, const String&amp; mimeType) override;
-    String overrideMediaType() const override;
</del><ins>+    WebCore::ObjectContentType objectContentType(const WebCore::URL&amp;, const String&amp; mimeType) final;
+    String overrideMediaType() const final;
</ins><span class="cx"> 
</span><del>-    void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&amp;) override;
</del><ins>+    void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&amp;) final;
</ins><span class="cx">     
</span><del>-    void dispatchGlobalObjectAvailable(WebCore::DOMWrapperWorld&amp;) override;
-    void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(WebCore::DOMWindowExtension*) override;
-    void dispatchDidReconnectDOMWindowExtensionToGlobalObject(WebCore::DOMWindowExtension*) override;
-    void dispatchWillDestroyGlobalObjectForDOMWindowExtension(WebCore::DOMWindowExtension*) override;
</del><ins>+    void dispatchGlobalObjectAvailable(WebCore::DOMWrapperWorld&amp;) final;
+    void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(WebCore::DOMWindowExtension*) final;
+    void dispatchDidReconnectDOMWindowExtensionToGlobalObject(WebCore::DOMWindowExtension*) final;
+    void dispatchWillDestroyGlobalObjectForDOMWindowExtension(WebCore::DOMWindowExtension*) final;
</ins><span class="cx"> 
</span><del>-    void registerForIconNotification(bool listen = true) override;
</del><ins>+    void registerForIconNotification(bool listen = true) final;
</ins><span class="cx">     
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    RemoteAXObjectRef accessibilityRemoteObject() override;
</del><ins>+    RemoteAXObjectRef accessibilityRemoteObject() final;
</ins><span class="cx">     
</span><del>-    NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const override;
</del><ins>+    NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const final;
</ins><span class="cx"> 
</span><del>-    NSDictionary *dataDetectionContext() override;
</del><ins>+    NSDictionary *dataDetectionContext() final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool shouldAlwaysUsePluginDocument(const String&amp; /*mimeType*/) const override;
</del><ins>+    bool shouldAlwaysUsePluginDocument(const String&amp; /*mimeType*/) const final;
</ins><span class="cx"> 
</span><del>-    void didChangeScrollOffset() override;
</del><ins>+    void didChangeScrollOffset() final;
</ins><span class="cx"> 
</span><del>-    bool allowScript(bool enabledPerSettings) override;
</del><ins>+    bool allowScript(bool enabledPerSettings) final;
</ins><span class="cx"> 
</span><del>-    bool shouldForceUniversalAccessFromLocalURL(const WebCore::URL&amp;) override;
</del><ins>+    bool shouldForceUniversalAccessFromLocalURL(const WebCore::URL&amp;) final;
</ins><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext() override;
</del><ins>+    Ref&lt;WebCore::FrameNetworkingContext&gt; createNetworkingContext() final;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(REQUEST_AUTOCOMPLETE)
</span><del>-    void didRequestAutocomplete(PassRefPtr&lt;WebCore::FormState&gt;) override;
</del><ins>+    void didRequestAutocomplete(Ref&lt;WebCore::FormState&gt;&amp;&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void forcePageTransitionIfNeeded() override;
</del><ins>+    void forcePageTransitionIfNeeded() final;
</ins><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><del>-    void didCreateQuickLookHandle(WebCore::QuickLookHandle&amp;) override;
</del><ins>+    void didCreateQuickLookHandle(WebCore::QuickLookHandle&amp;) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_FILTERING)
</span><del>-    void contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler) override;
</del><ins>+    void contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler) final;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void prefetchDNS(const String&amp;) override;
</del><ins>+    void prefetchDNS(const String&amp;) final;
</ins><span class="cx"> 
</span><del>-    void didRestoreScrollPosition() override;
</del><ins>+    void didRestoreScrollPosition() final;
</ins><span class="cx"> 
</span><del>-    bool useIconLoadingClient() override;
-    void getLoadDecisionForIcon(const WebCore::LinkIcon&amp;, uint64_t callbackID) override;
-    void finishedLoadingIcon(uint64_t loadIdentifier, WebCore::SharedBuffer*) override;
</del><ins>+    bool useIconLoadingClient() final;
+    void getLoadDecisionForIcon(const WebCore::LinkIcon&amp;, uint64_t callbackID) final;
+    void finishedLoadingIcon(uint64_t loadIdentifier, WebCore::SharedBuffer*) final;
</ins><span class="cx"> 
</span><span class="cx">     WebFrame* m_frame;
</span><span class="cx">     RefPtr&lt;PluginView&gt; m_pluginView;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportiosWebChromeClientIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -38,10 +38,12 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(IOS_TOUCH_EVENTS)
</span><ins>+
</ins><span class="cx"> void WebChromeClient::didPreventDefaultForEvent()
</span><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::elementDidRefocus(const WebCore::Node* node)
</span><span class="lines">@@ -51,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didReceiveMobileDocType(bool isMobileDoctype)
</span><span class="cx"> {
</span><del>-    m_page-&gt;didReceiveMobileDocType(isMobileDoctype);
</del><ins>+    m_page.didReceiveMobileDocType(isMobileDoctype);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::setNeedsScrollNotifications(WebCore::Frame*, bool)
</span><span class="lines">@@ -61,7 +63,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::observedContentChange(WebCore::Frame*)
</span><span class="cx"> {
</span><del>-    m_page-&gt;completePendingSyntheticClickForContentChangeObserver();
</del><ins>+    m_page.completePendingSyntheticClickForContentChangeObserver();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::clearContentChangeObservers(WebCore::Frame*)
</span><span class="lines">@@ -71,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::notifyRevealedSelectionByScrollingFrame(WebCore::Frame*)
</span><span class="cx"> {
</span><del>-    m_page-&gt;didChangeSelection();
</del><ins>+    m_page.didChangeSelection();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::isStopping()
</span><span class="lines">@@ -83,22 +85,22 @@
</span><span class="cx"> void WebChromeClient::didLayout(LayoutType type)
</span><span class="cx"> {
</span><span class="cx">     if (type == Scroll)
</span><del>-        m_page-&gt;didChangeSelection();
</del><ins>+        m_page.didChangeSelection();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didStartOverflowScroll()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::OverflowScrollWillStartScroll());
</del><ins>+    m_page.send(Messages::WebPageProxy::OverflowScrollWillStartScroll());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::didEndOverflowScroll()
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::OverflowScrollDidEndScroll());
</del><ins>+    m_page.send(Messages::WebPageProxy::OverflowScrollDidEndScroll());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebChromeClient::hasStablePageScaleFactor() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;hasStablePageScaleFactor();
</del><ins>+    return m_page.hasStablePageScaleFactor();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::suppressFormNotifications()
</span><span class="lines">@@ -128,17 +130,17 @@
</span><span class="cx"> 
</span><span class="cx"> void WebChromeClient::showPlaybackTargetPicker(bool hasVideo)
</span><span class="cx"> {
</span><del>-    m_page-&gt;send(Messages::WebPageProxy::ShowPlaybackTargetPicker(hasVideo, m_page-&gt;rectForElementAtInteractionLocation()));
</del><ins>+    m_page.send(Messages::WebPageProxy::ShowPlaybackTargetPicker(hasVideo, m_page.rectForElementAtInteractionLocation()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Seconds WebChromeClient::eventThrottlingDelay()
</span><span class="cx"> {
</span><del>-    return m_page-&gt;eventThrottlingDelay();
</del><ins>+    return m_page.eventThrottlingDelay();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int WebChromeClient::deviceOrientation() const
</span><span class="cx"> {
</span><del>-    return m_page-&gt;deviceOrientation();
</del><ins>+    return m_page.deviceOrientation();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -374,7 +374,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(this), WebSocketProvider::create());
</span><del>-    pageConfiguration.chromeClient = new WebChromeClient(this);
</del><ins>+    pageConfiguration.chromeClient = new WebChromeClient(*this);
</ins><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     pageConfiguration.contextMenuClient = new WebContextMenuClient(this);
</span><span class="cx"> #endif
</span><span class="lines">@@ -730,7 +730,8 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-PassRefPtr&lt;Plugin&gt; WebPage::createPlugin(WebFrame* frame, HTMLPlugInElement* pluginElement, const Plugin::Parameters&amp; parameters, String&amp; newMIMEType)
</del><ins>+
+RefPtr&lt;Plugin&gt; WebPage::createPlugin(WebFrame* frame, HTMLPlugInElement* pluginElement, const Plugin::Parameters&amp; parameters, String&amp; newMIMEType)
</ins><span class="cx"> {
</span><span class="cx">     String frameURLString = frame-&gt;coreFrame()-&gt;loader().documentLoader()-&gt;responseURL().string();
</span><span class="cx">     String pageURLString = m_page-&gt;mainFrame().loader().documentLoader()-&gt;responseURL().string();
</span><span class="lines">@@ -1360,7 +1361,7 @@
</span><span class="cx"> 
</span><span class="cx"> WebPage* WebPage::fromCorePage(Page* page)
</span><span class="cx"> {
</span><del>-    return static_cast&lt;WebChromeClient&amp;&gt;(page-&gt;chrome().client()).page();
</del><ins>+    return &amp;static_cast&lt;WebChromeClient&amp;&gt;(page-&gt;chrome().client()).page();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::setSize(const WebCore::IntSize&amp; viewSize)
</span><span class="lines">@@ -1826,7 +1827,8 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-void WebPage::setHeaderPageBanner(PassRefPtr&lt;PageBanner&gt; pageBanner)
</del><ins>+
+void WebPage::setHeaderPageBanner(PageBanner* pageBanner)
</ins><span class="cx"> {
</span><span class="cx">     if (m_headerBanner)
</span><span class="cx">         m_headerBanner-&gt;detachFromPage();
</span><span class="lines">@@ -1842,7 +1844,7 @@
</span><span class="cx">     return m_headerBanner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::setFooterPageBanner(PassRefPtr&lt;PageBanner&gt; pageBanner)
</del><ins>+void WebPage::setFooterPageBanner(PageBanner* pageBanner)
</ins><span class="cx"> {
</span><span class="cx">     if (m_footerBanner)
</span><span class="cx">         m_footerBanner-&gt;detachFromPage();
</span><span class="lines">@@ -3609,6 +3611,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><ins>+
</ins><span class="cx"> void WebPage::setActiveColorChooser(WebColorChooser* colorChooser)
</span><span class="cx"> {
</span><span class="cx">     m_activeColorChooser = colorChooser;
</span><span class="lines">@@ -3623,11 +3626,12 @@
</span><span class="cx"> {
</span><span class="cx">     m_activeColorChooser-&gt;didChooseColor(color);
</span><span class="cx"> }
</span><ins>+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void WebPage::setActiveOpenPanelResultListener(PassRefPtr&lt;WebOpenPanelResultListener&gt; openPanelResultListener)
</del><ins>+void WebPage::setActiveOpenPanelResultListener(Ref&lt;WebOpenPanelResultListener&gt;&amp;&amp; openPanelResultListener)
</ins><span class="cx"> {
</span><del>-    m_activeOpenPanelResultListener = openPanelResultListener;
</del><ins>+    m_activeOpenPanelResultListener = WTFMove(openPanelResultListener);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebPage::findStringFromInjectedBundle(const String&amp; target, FindOptions options)
</span><span class="lines">@@ -5442,11 +5446,11 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Range&gt; WebPage::currentSelectionAsRange()
</del><ins>+RefPtr&lt;Range&gt; WebPage::currentSelectionAsRange()
</ins><span class="cx"> {
</span><del>-    Frame* frame = frameWithSelection(m_page.get());
</del><ins>+    auto* frame = frameWithSelection(m_page.get());
</ins><span class="cx">     if (!frame)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     return frame-&gt;selection().toNormalizedRange();
</span><span class="cx"> }
</span><span class="lines">@@ -5546,7 +5550,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;WebCore::Range&gt; WebPage::rangeFromEditingRange(WebCore::Frame&amp; frame, const EditingRange&amp; range, EditingRangeIsRelativeTo editingRangeIsRelativeTo)
</del><ins>+RefPtr&lt;WebCore::Range&gt; WebPage::rangeFromEditingRange(WebCore::Frame&amp; frame, const EditingRange&amp; range, EditingRangeIsRelativeTo editingRangeIsRelativeTo)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(range.location != notFound);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -74,7 +74,6 @@
</span><span class="cx"> #include &lt;memory&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/MonotonicTime.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> #include &lt;wtf/Seconds.h&gt;
</span><span class="lines">@@ -314,7 +313,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     WebOpenPanelResultListener* activeOpenPanelResultListener() const { return m_activeOpenPanelResultListener.get(); }
</span><del>-    void setActiveOpenPanelResultListener(PassRefPtr&lt;WebOpenPanelResultListener&gt;);
</del><ins>+    void setActiveOpenPanelResultListener(Ref&lt;WebOpenPanelResultListener&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) override;
</span><span class="cx">     void didReceiveSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::unique_ptr&lt;IPC::Encoder&gt;&amp;) override;
</span><span class="lines">@@ -355,16 +354,16 @@
</span><span class="cx">     WebCore::MainFrame* mainFrame() const; // May return 0.
</span><span class="cx">     WebCore::FrameView* mainFrameView() const; // May return 0.
</span><span class="cx"> 
</span><del>-    PassRefPtr&lt;WebCore::Range&gt; currentSelectionAsRange();
</del><ins>+    RefPtr&lt;WebCore::Range&gt; currentSelectionAsRange();
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-    PassRefPtr&lt;Plugin&gt; createPlugin(WebFrame*, WebCore::HTMLPlugInElement*, const Plugin::Parameters&amp;, String&amp; newMIMEType);
</del><ins>+    RefPtr&lt;Plugin&gt; createPlugin(WebFrame*, WebCore::HTMLPlugInElement*, const Plugin::Parameters&amp;, String&amp; newMIMEType);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><span class="cx">     WebCore::WebGLLoadPolicy webGLPolicyForURL(WebFrame*, const String&amp;);
</span><span class="cx">     WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(WebFrame*, const String&amp;);
</span><del>-#endif // ENABLE(WEBGL)
</del><ins>+#endif
</ins><span class="cx">     
</span><span class="cx">     enum class IncludePostLayoutDataHint { No, Yes };
</span><span class="cx">     EditorState editorState(IncludePostLayoutDataHint = IncludePostLayoutDataHint::Yes) const;
</span><span class="lines">@@ -455,21 +454,21 @@
</span><span class="cx"> 
</span><span class="cx">     bool hasCachedWindowFrame() const { return m_hasCachedWindowFrame; }
</span><span class="cx"> 
</span><del>-#if !PLATFORM(IOS)
-    void setTopOverhangImage(PassRefPtr&lt;WebImage&gt;);
-    void setBottomOverhangImage(PassRefPtr&lt;WebImage&gt;);
-#endif // !PLATFORM(IOS)
-
</del><span class="cx">     void updateHeaderAndFooterLayersForDeviceScaleChange(float scaleFactor);
</span><del>-#endif // PLATFORM(COCOA)
</del><ins>+#endif
</ins><span class="cx"> 
</span><ins>+#if PLATFORM(MAC)
+    void setTopOverhangImage(WebImage*);
+    void setBottomOverhangImage(WebImage*);
+#endif
+
</ins><span class="cx">     bool windowIsFocused() const;
</span><span class="cx">     bool windowAndWebPageAreFocused() const;
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    void setHeaderPageBanner(PassRefPtr&lt;PageBanner&gt;);
</del><ins>+    void setHeaderPageBanner(PageBanner*);
</ins><span class="cx">     PageBanner* headerPageBanner();
</span><del>-    void setFooterPageBanner(PassRefPtr&lt;PageBanner&gt;);
</del><ins>+    void setFooterPageBanner(PageBanner*);
</ins><span class="cx">     PageBanner* footerPageBanner();
</span><span class="cx"> 
</span><span class="cx">     void hidePageBanners();
</span><span class="lines">@@ -477,7 +476,7 @@
</span><span class="cx">     
</span><span class="cx">     void setHeaderBannerHeightForTesting(int);
</span><span class="cx">     void setFooterBannerHeightForTesting(int);
</span><del>-#endif // !PLATFORM(IOS)
</del><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     WebCore::IntPoint screenToRootView(const WebCore::IntPoint&amp;);
</span><span class="cx">     WebCore::IntRect rootViewToScreen(const WebCore::IntRect&amp;);
</span><span class="lines">@@ -621,7 +620,7 @@
</span><span class="cx">     bool hasLocalDataForURL(const WebCore::URL&amp;);
</span><span class="cx">     String cachedResponseMIMETypeForURL(const WebCore::URL&amp;);
</span><span class="cx">     String cachedSuggestedFilenameForURL(const WebCore::URL&amp;);
</span><del>-    PassRefPtr&lt;WebCore::SharedBuffer&gt; cachedResponseDataForURL(const WebCore::URL&amp;);
</del><ins>+    RefPtr&lt;WebCore::SharedBuffer&gt; cachedResponseDataForURL(const WebCore::URL&amp;);
</ins><span class="cx"> 
</span><span class="cx">     static bool canHandleRequest(const WebCore::ResourceRequest&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -1016,9 +1015,11 @@
</span><span class="cx">     bool shouldSwitchToBlockModeForHandle(const WebCore::IntPoint&amp; handlePoint, SelectionHandlePosition);
</span><span class="cx">     RefPtr&lt;WebCore::Range&gt; switchToBlockSelectionAtPoint(const WebCore::IntPoint&amp;, SelectionHandlePosition);
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if !PLATFORM(COCOA)
</span><span class="cx">     static const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx">     bool performDefaultBehaviorForKeyEvent(const WebKeyboardEvent&amp;);
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="lines">@@ -1206,7 +1207,7 @@
</span><span class="cx">     static PluginView* focusedPluginViewForFrame(WebCore::Frame&amp;);
</span><span class="cx">     static PluginView* pluginViewForFrame(WebCore::Frame*);
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;WebCore::Range&gt; rangeFromEditingRange(WebCore::Frame&amp;, const EditingRange&amp;, EditingRangeIsRelativeTo = EditingRangeIsRelativeTo::EditableRoot);
</del><ins>+    static RefPtr&lt;WebCore::Range&gt; rangeFromEditingRange(WebCore::Frame&amp;, const EditingRange&amp;, EditingRangeIsRelativeTo = EditingRangeIsRelativeTo::EditableRoot);
</ins><span class="cx"> 
</span><span class="cx">     void reportUsedFeatures();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageeflWebPageEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</del><ins>+RefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     return 0;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagegtkWebPageGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -185,13 +185,12 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</del><ins>+RefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> String WebPage::platformUserAgent(const URL&amp; url) const
</span><span class="cx"> {
</span><span class="cx">     if (url.isNull() || !m_page-&gt;settings().needsSiteSpecificQuirks())
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -468,10 +468,10 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</del><ins>+RefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp;)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebPage::platformCanHandleRequest(const WebCore::ResourceRequest&amp;)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacWebPageMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -724,7 +724,7 @@
</span><span class="cx">     return [[cachedResponseForURL(this, url) response] MIMEType];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp; url)
</del><ins>+RefPtr&lt;SharedBuffer&gt; WebPage::cachedResponseDataForURL(const URL&amp; url)
</ins><span class="cx"> {
</span><span class="cx">     return SharedBuffer::wrapNSData([cachedResponseForURL(this, url) data]);
</span><span class="cx"> }
</span><span class="lines">@@ -773,37 +773,33 @@
</span><span class="cx">         result = !!hitResult.scrollbar();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::setTopOverhangImage(PassRefPtr&lt;WebImage&gt; image)
</del><ins>+void WebPage::setTopOverhangImage(WebImage* image)
</ins><span class="cx"> {
</span><del>-    FrameView* frameView = m_mainFrame-&gt;coreFrame()-&gt;view();
</del><ins>+    auto* frameView = m_mainFrame-&gt;coreFrame()-&gt;view();
</ins><span class="cx">     if (!frameView)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    GraphicsLayer* layer = frameView-&gt;setWantsLayerForTopOverHangArea(image.get());
</del><ins>+    auto* layer = frameView-&gt;setWantsLayerForTopOverHangArea(image);
</ins><span class="cx">     if (!layer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     layer-&gt;setSize(image-&gt;size());
</span><span class="cx">     layer-&gt;setPosition(FloatPoint(0, -image-&gt;size().height()));
</span><del>-
-    RetainPtr&lt;CGImageRef&gt; cgImage = image-&gt;bitmap().makeCGImageCopy();
-    layer-&gt;platformLayer().contents = (id)cgImage.get();
</del><ins>+    layer-&gt;platformLayer().contents = (id)image-&gt;bitmap().makeCGImageCopy().get();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::setBottomOverhangImage(PassRefPtr&lt;WebImage&gt; image)
</del><ins>+void WebPage::setBottomOverhangImage(WebImage* image)
</ins><span class="cx"> {
</span><del>-    FrameView* frameView = m_mainFrame-&gt;coreFrame()-&gt;view();
</del><ins>+    auto* frameView = m_mainFrame-&gt;coreFrame()-&gt;view();
</ins><span class="cx">     if (!frameView)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    GraphicsLayer* layer = frameView-&gt;setWantsLayerForBottomOverHangArea(image.get());
</del><ins>+    auto* layer = frameView-&gt;setWantsLayerForBottomOverHangArea(image);
</ins><span class="cx">     if (!layer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     layer-&gt;setSize(image-&gt;size());
</span><del>-    
-    RetainPtr&lt;CGImageRef&gt; cgImage = image-&gt;bitmap().makeCGImageCopy();
-    layer-&gt;platformLayer().contents = (id)cgImage.get();
</del><ins>+    layer-&gt;platformLayer().contents = (id)image-&gt;bitmap().makeCGImageCopy().get();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPage::updateHeaderAndFooterLayersForDeviceScaleChange(float scaleFactor)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -158,22 +158,12 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     , m_viewUpdateDispatcher(ViewUpdateDispatcher::create())
</span><span class="cx"> #endif
</span><del>-    , m_inDidClose(false)
-    , m_hasSetCacheModel(false)
-    , m_cacheModel(CacheModelDocumentViewer)
-    , m_fullKeyboardAccessEnabled(false)
-    , m_textCheckerState()
-    , m_iconDatabaseProxy(*new WebIconDatabaseProxy(this))
</del><ins>+    , m_iconDatabaseProxy(*new WebIconDatabaseProxy(*this))
</ins><span class="cx">     , m_webLoaderStrategy(*new WebLoaderStrategy)
</span><span class="cx">     , m_dnsPrefetchHystereris([this](HysteresisState state) { if (state == HysteresisState::Stopped) m_dnsPrefetchedHosts.clear(); })
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">     , m_pluginProcessConnectionManager(PluginProcessConnectionManager::create())
</span><span class="cx"> #endif
</span><del>-#if ENABLE(SERVICE_CONTROLS)
-    , m_hasImageServices(false)
-    , m_hasSelectionServices(false)
-    , m_hasRichContentServices(false)
-#endif
</del><span class="cx">     , m_nonVisibleProcessCleanupTimer(*this, &amp;WebProcess::nonVisibleProcessCleanupTimerFired)
</span><span class="cx">     , m_statisticsChangedTimer(*this, &amp;WebProcess::statisticsChangedTimerFired)
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="lines">@@ -194,9 +184,11 @@
</span><span class="cx"> #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
</span><span class="cx">     addSupplement&lt;WebNotificationManager&gt;();
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><span class="cx">     addSupplement&lt;WebMediaKeyStorageManager&gt;();
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx">     m_plugInAutoStartOriginHashes.add(SessionID::defaultSessionID(), HashMap&lt;unsigned, double&gt;());
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="lines">@@ -207,7 +199,6 @@
</span><span class="cx">     m_resourceLoadStatisticsStorage-&gt;setNotificationCallback([this] {
</span><span class="cx">         if (m_statisticsChangedTimer.isActive())
</span><span class="cx">             return;
</span><del>-        
</del><span class="cx">         m_statisticsChangedTimer.startOneShot(std::chrono::seconds(5));
</span><span class="cx">     });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (210844 => 210845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebProcess.h        2017-01-18 04:22:45 UTC (rev 210844)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h        2017-01-18 05:17:17 UTC (rev 210845)
</span><span class="lines">@@ -23,8 +23,7 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WebProcess_h
-#define WebProcess_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #include &quot;CacheModel.h&quot;
</span><span class="cx"> #include &quot;ChildProcess.h&quot;
</span><span class="lines">@@ -346,13 +345,13 @@
</span><span class="cx">     RefPtr&lt;ViewUpdateDispatcher&gt; m_viewUpdateDispatcher;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool m_inDidClose;
</del><ins>+    bool m_inDidClose { false };
</ins><span class="cx"> 
</span><span class="cx">     HashMap&lt;WebCore::SessionID, HashMap&lt;unsigned, double&gt;&gt; m_plugInAutoStartOriginHashes;
</span><span class="cx">     HashSet&lt;String&gt; m_plugInAutoStartOrigins;
</span><span class="cx"> 
</span><del>-    bool m_hasSetCacheModel;
-    CacheModel m_cacheModel;
</del><ins>+    bool m_hasSetCacheModel { false };
+    CacheModel m_cacheModel { CacheModelDocumentViewer };
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     WebCore::MachSendRight m_compositingRenderServerPort;
</span><span class="lines">@@ -359,7 +358,7 @@
</span><span class="cx">     pid_t m_presenterApplicationPid;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    bool m_fullKeyboardAccessEnabled;
</del><ins>+    bool m_fullKeyboardAccessEnabled { false };
</ins><span class="cx"> 
</span><span class="cx">     HashMap&lt;uint64_t, WebFrame*&gt; m_frameMap;
</span><span class="cx"> 
</span><span class="lines">@@ -388,9 +387,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(SERVICE_CONTROLS)
</span><del>-    bool m_hasImageServices;
-    bool m_hasSelectionServices;
-    bool m_hasRichContentServices;
</del><ins>+    bool m_hasImageServices { false };
+    bool m_hasSelectionServices { false };
+    bool m_hasRichContentServices { false };
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     HashSet&lt;uint64_t&gt; m_pagesInWindows;
</span><span class="lines">@@ -416,5 +415,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><del>-
-#endif // WebProcess_h
</del></span></pre>
</div>
</div>

</body>
</html>