| Index: Source/core/page/Page.cpp
|
| diff --git a/Source/core/page/Page.cpp b/Source/core/page/Page.cpp
|
| index 38062ea89b384ce3888f78fa34ab4b64ce0b2be5..2956f711c0b999ab9a708c5b8c7a0623aba2503f 100644
|
| --- a/Source/core/page/Page.cpp
|
| +++ b/Source/core/page/Page.cpp
|
| @@ -124,6 +124,7 @@ Page::Page(PageClients& pageClients)
|
| , m_inspectorController(InspectorController::create(this, pageClients.inspectorClient))
|
| , m_pointerLockController(PointerLockController::create(this))
|
| , m_undoStack(UndoStack::create())
|
| + , m_mainFrame(0)
|
| , m_backForwardClient(pageClients.backForwardClient)
|
| , m_editorClient(pageClients.editorClient)
|
| , m_spellCheckerClient(pageClients.spellCheckerClient)
|
| @@ -197,7 +198,7 @@ PassRefPtrWillBeRawPtr<ClientRectList> Page::nonFastScrollableRects(const LocalF
|
| return ClientRectList::create(quads);
|
| }
|
|
|
| -void Page::setMainFrame(PassRefPtr<Frame> mainFrame)
|
| +void Page::setMainFrame(Frame* mainFrame)
|
| {
|
| ASSERT(!m_mainFrame); // Should only be called during initialization
|
| m_mainFrame = mainFrame;
|
| @@ -382,7 +383,7 @@ void Page::allVisitedStateChanged()
|
| HashSet<Page*>::iterator pagesEnd = ordinaryPages().end();
|
| for (HashSet<Page*>::iterator it = ordinaryPages().begin(); it != pagesEnd; ++it) {
|
| Page* page = *it;
|
| - for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree().traverseNext()) {
|
| + for (Frame* frame = page->m_mainFrame; frame; frame = frame->tree().traverseNext()) {
|
| if (frame->isLocalFrame())
|
| toLocalFrame(frame)->document()->visitedLinkState().invalidateStyleForAllLinks();
|
| }
|
| @@ -394,7 +395,7 @@ void Page::visitedStateChanged(LinkHash linkHash)
|
| HashSet<Page*>::iterator pagesEnd = ordinaryPages().end();
|
| for (HashSet<Page*>::iterator it = ordinaryPages().begin(); it != pagesEnd; ++it) {
|
| Page* page = *it;
|
| - for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree().traverseNext()) {
|
| + for (Frame* frame = page->m_mainFrame; frame; frame = frame->tree().traverseNext()) {
|
| if (frame->isLocalFrame())
|
| toLocalFrame(frame)->document()->visitedLinkState().invalidateStyleForLink(linkHash);
|
| }
|
| @@ -603,17 +604,19 @@ void Page::trace(Visitor* visitor)
|
|
|
| void Page::willBeDestroyed()
|
| {
|
| - if (m_mainFrame && m_mainFrame->isLocalFrame())
|
| - deprecatedLocalMainFrame()->loader().frameDetached();
|
| + RefPtr<Frame> mainFrame = m_mainFrame;
|
| +
|
| + if (mainFrame->isLocalFrame())
|
| + toLocalFrame(mainFrame.get())->loader().frameDetached();
|
|
|
| // Disable all agents prior to resetting the frame view.
|
| m_inspectorController->willBeDestroyed();
|
|
|
| - if (m_mainFrame->isLocalFrame()) {
|
| - toLocalFrame(m_mainFrame.get())->setView(nullptr);
|
| + if (mainFrame->isLocalFrame()) {
|
| + toLocalFrame(mainFrame.get())->setView(nullptr);
|
| } else {
|
| ASSERT(m_mainFrame->isRemoteFrame());
|
| - toRemoteFrame(m_mainFrame.get())->setView(nullptr);
|
| + toRemoteFrame(mainFrame.get())->setView(nullptr);
|
| }
|
|
|
| allPages().remove(this);
|
| @@ -628,7 +631,7 @@ void Page::willBeDestroyed()
|
| #endif
|
|
|
| m_chrome->willBeDestroyed();
|
| - m_mainFrame.clear();
|
| + m_mainFrame = 0;
|
| if (m_validationMessageClient)
|
| m_validationMessageClient->willBeDestroyed();
|
| WillBeHeapSupplementable<Page>::willBeDestroyed();
|
|
|