| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All R
ights Reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All R
ights Reserved. |
| 3 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 3 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "core/editing/Caret.h" | 27 #include "core/editing/Caret.h" |
| 28 #include "core/editing/UndoStack.h" | 28 #include "core/editing/UndoStack.h" |
| 29 #include "core/events/Event.h" | 29 #include "core/events/Event.h" |
| 30 #include "core/fetch/ResourceFetcher.h" | 30 #include "core/fetch/ResourceFetcher.h" |
| 31 #include "core/frame/DOMTimer.h" | 31 #include "core/frame/DOMTimer.h" |
| 32 #include "core/frame/DOMWindow.h" | 32 #include "core/frame/DOMWindow.h" |
| 33 #include "core/frame/EventHandlerRegistry.h" | 33 #include "core/frame/EventHandlerRegistry.h" |
| 34 #include "core/frame/FrameHost.h" | 34 #include "core/frame/FrameHost.h" |
| 35 #include "core/frame/FrameView.h" | 35 #include "core/frame/FrameView.h" |
| 36 #include "core/frame/LocalFrame.h" | 36 #include "core/frame/LocalFrame.h" |
| 37 #include "core/frame/RemoteFrame.h" |
| 38 #include "core/frame/RemoteFrameView.h" |
| 37 #include "core/frame/Settings.h" | 39 #include "core/frame/Settings.h" |
| 38 #include "core/inspector/InspectorController.h" | 40 #include "core/inspector/InspectorController.h" |
| 39 #include "core/inspector/InspectorInstrumentation.h" | 41 #include "core/inspector/InspectorInstrumentation.h" |
| 40 #include "core/loader/FrameLoader.h" | 42 #include "core/loader/FrameLoader.h" |
| 41 #include "core/loader/HistoryItem.h" | 43 #include "core/loader/HistoryItem.h" |
| 42 #include "core/page/AutoscrollController.h" | 44 #include "core/page/AutoscrollController.h" |
| 43 #include "core/page/Chrome.h" | 45 #include "core/page/Chrome.h" |
| 44 #include "core/page/ChromeClient.h" | 46 #include "core/page/ChromeClient.h" |
| 45 #include "core/page/ContextMenuController.h" | 47 #include "core/page/ContextMenuController.h" |
| 46 #include "core/page/DragController.h" | 48 #include "core/page/DragController.h" |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 } | 156 } |
| 155 | 157 |
| 156 void Page::makeOrdinary() | 158 void Page::makeOrdinary() |
| 157 { | 159 { |
| 158 ASSERT(!ordinaryPages().contains(this)); | 160 ASSERT(!ordinaryPages().contains(this)); |
| 159 ordinaryPages().add(this); | 161 ordinaryPages().add(this); |
| 160 } | 162 } |
| 161 | 163 |
| 162 ViewportDescription Page::viewportDescription() const | 164 ViewportDescription Page::viewportDescription() const |
| 163 { | 165 { |
| 164 return mainFrame() && mainFrame()->document() ? mainFrame()->document()->vie
wportDescription() : ViewportDescription(); | 166 return mainFrame() && mainFrame()->isLocalFrame() && deprecatedLocalMainFram
e()->document() ? deprecatedLocalMainFrame()->document()->viewportDescription()
: ViewportDescription(); |
| 165 } | 167 } |
| 166 | 168 |
| 167 ScrollingCoordinator* Page::scrollingCoordinator() | 169 ScrollingCoordinator* Page::scrollingCoordinator() |
| 168 { | 170 { |
| 169 if (!m_scrollingCoordinator && m_settings->acceleratedCompositingEnabled()) | 171 if (!m_scrollingCoordinator && m_settings->acceleratedCompositingEnabled()) |
| 170 m_scrollingCoordinator = ScrollingCoordinator::create(this); | 172 m_scrollingCoordinator = ScrollingCoordinator::create(this); |
| 171 | 173 |
| 172 return m_scrollingCoordinator.get(); | 174 return m_scrollingCoordinator.get(); |
| 173 } | 175 } |
| 174 | 176 |
| 175 String Page::mainThreadScrollingReasonsAsText() | 177 String Page::mainThreadScrollingReasonsAsText() |
| 176 { | 178 { |
| 177 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) | 179 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) |
| 178 return scrollingCoordinator->mainThreadScrollingReasonsAsText(); | 180 return scrollingCoordinator->mainThreadScrollingReasonsAsText(); |
| 179 | 181 |
| 180 return String(); | 182 return String(); |
| 181 } | 183 } |
| 182 | 184 |
| 183 PassRefPtrWillBeRawPtr<ClientRectList> Page::nonFastScrollableRects(const LocalF
rame* frame) | 185 PassRefPtrWillBeRawPtr<ClientRectList> Page::nonFastScrollableRects(const LocalF
rame* frame) |
| 184 { | 186 { |
| 185 if (Document* document = m_mainFrame->document()) | 187 if (m_mainFrame->isLocalFrame() && deprecatedLocalMainFrame()->document()) |
| 186 document->updateLayout(); | 188 deprecatedLocalMainFrame()->document()->updateLayout(); |
| 187 | 189 |
| 188 Vector<IntRect> rects; | 190 Vector<IntRect> rects; |
| 189 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) | 191 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator(
)) |
| 190 rects = scrollingCoordinator->computeShouldHandleScrollGestureOnMainThre
adRegion(frame, IntPoint()).rects(); | 192 rects = scrollingCoordinator->computeShouldHandleScrollGestureOnMainThre
adRegion(frame, IntPoint()).rects(); |
| 191 | 193 |
| 192 Vector<FloatQuad> quads(rects.size()); | 194 Vector<FloatQuad> quads(rects.size()); |
| 193 for (size_t i = 0; i < rects.size(); ++i) | 195 for (size_t i = 0; i < rects.size(); ++i) |
| 194 quads[i] = FloatRect(rects[i]); | 196 quads[i] = FloatRect(rects[i]); |
| 195 return ClientRectList::create(quads); | 197 return ClientRectList::create(quads); |
| 196 } | 198 } |
| 197 | 199 |
| 198 void Page::setMainFrame(PassRefPtr<LocalFrame> mainFrame) | 200 void Page::setMainFrame(PassRefPtr<Frame> mainFrame) |
| 199 { | 201 { |
| 200 ASSERT(!m_mainFrame); // Should only be called during initialization | 202 ASSERT(!m_mainFrame); // Should only be called during initialization |
| 201 m_mainFrame = mainFrame; | 203 m_mainFrame = mainFrame; |
| 202 } | 204 } |
| 203 | 205 |
| 204 void Page::documentDetached(Document* document) | 206 void Page::documentDetached(Document* document) |
| 205 { | 207 { |
| 206 m_multisamplingChangedObservers.clear(); | 208 m_multisamplingChangedObservers.clear(); |
| 207 m_pointerLockController->documentDetached(document); | 209 m_pointerLockController->documentDetached(document); |
| 208 m_contextMenuController->documentDetached(document); | 210 m_contextMenuController->documentDetached(document); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 framesNeedingReload.append(toLocalFrame(frame)); | 278 framesNeedingReload.append(toLocalFrame(frame)); |
| 277 } | 279 } |
| 278 } | 280 } |
| 279 | 281 |
| 280 for (size_t i = 0; i < framesNeedingReload.size(); ++i) | 282 for (size_t i = 0; i < framesNeedingReload.size(); ++i) |
| 281 framesNeedingReload[i]->loader().reload(); | 283 framesNeedingReload[i]->loader().reload(); |
| 282 } | 284 } |
| 283 | 285 |
| 284 PluginData* Page::pluginData() const | 286 PluginData* Page::pluginData() const |
| 285 { | 287 { |
| 286 if (!mainFrame()->loader().allowPlugins(NotAboutToInstantiatePlugin)) | 288 if (!deprecatedLocalMainFrame()->loader().allowPlugins(NotAboutToInstantiate
Plugin)) |
| 287 return 0; | 289 return 0; |
| 288 if (!m_pluginData) | 290 if (!m_pluginData) |
| 289 m_pluginData = PluginData::create(this); | 291 m_pluginData = PluginData::create(this); |
| 290 return m_pluginData.get(); | 292 return m_pluginData.get(); |
| 291 } | 293 } |
| 292 | 294 |
| 293 static Frame* incrementFrame(Frame* curr, bool forward, bool wrapFlag) | 295 static Frame* incrementFrame(Frame* curr, bool forward, bool wrapFlag) |
| 294 { | 296 { |
| 295 return forward | 297 return forward |
| 296 ? curr->tree().traverseNextWithWrap(wrapFlag) | 298 ? curr->tree().traverseNextWithWrap(wrapFlag) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 322 | 324 |
| 323 m_defersLoading = defers; | 325 m_defersLoading = defers; |
| 324 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()
) { | 326 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()
) { |
| 325 if (frame->isLocalFrame()) | 327 if (frame->isLocalFrame()) |
| 326 toLocalFrame(frame)->loader().setDefersLoading(defers); | 328 toLocalFrame(frame)->loader().setDefersLoading(defers); |
| 327 } | 329 } |
| 328 } | 330 } |
| 329 | 331 |
| 330 void Page::setPageScaleFactor(float scale, const IntPoint& origin) | 332 void Page::setPageScaleFactor(float scale, const IntPoint& origin) |
| 331 { | 333 { |
| 332 FrameView* view = mainFrame()->view(); | 334 if (!mainFrame()->isLocalFrame()) |
| 335 return; |
| 336 |
| 337 FrameView* view = deprecatedLocalMainFrame()->view(); |
| 333 PinchViewport& viewport = frameHost().pinchViewport(); | 338 PinchViewport& viewport = frameHost().pinchViewport(); |
| 334 | 339 |
| 335 if (scale != viewport.scale()) { | 340 if (scale != viewport.scale()) { |
| 336 viewport.setScale(scale); | 341 viewport.setScale(scale); |
| 337 | 342 |
| 338 if (view && !settings().pinchVirtualViewportEnabled()) | 343 if (view && !settings().pinchVirtualViewportEnabled()) |
| 339 view->setVisibleContentScaleFactor(scale); | 344 view->setVisibleContentScaleFactor(scale); |
| 340 | 345 |
| 341 mainFrame()->deviceOrPageScaleFactorChanged(); | 346 deprecatedLocalMainFrame()->deviceOrPageScaleFactorChanged(); |
| 342 m_chrome->client().deviceOrPageScaleFactorChanged(); | 347 m_chrome->client().deviceOrPageScaleFactorChanged(); |
| 343 | 348 |
| 344 // FIXME: In virtual-viewport pinch mode, scale doesn't change the fixed
-pos viewport; | 349 // FIXME: In virtual-viewport pinch mode, scale doesn't change the fixed
-pos viewport; |
| 345 // remove once it's the only pinch mode in town. | 350 // remove once it's the only pinch mode in town. |
| 346 if (view) | 351 if (view) |
| 347 view->viewportConstrainedVisibleContentSizeChanged(true, true); | 352 view->viewportConstrainedVisibleContentSizeChanged(true, true); |
| 348 | 353 |
| 349 mainFrame()->loader().saveScrollState(); | 354 deprecatedLocalMainFrame()->loader().saveScrollState(); |
| 350 } | 355 } |
| 351 | 356 |
| 352 if (view && view->scrollPosition() != origin) | 357 if (view && view->scrollPosition() != origin) |
| 353 view->notifyScrollPositionChanged(origin); | 358 view->notifyScrollPositionChanged(origin); |
| 354 } | 359 } |
| 355 | 360 |
| 356 float Page::pageScaleFactor() const | 361 float Page::pageScaleFactor() const |
| 357 { | 362 { |
| 358 return frameHost().pinchViewport().scale(); | 363 return frameHost().pinchViewport().scale(); |
| 359 } | 364 } |
| 360 | 365 |
| 361 void Page::setDeviceScaleFactor(float scaleFactor) | 366 void Page::setDeviceScaleFactor(float scaleFactor) |
| 362 { | 367 { |
| 363 if (m_deviceScaleFactor == scaleFactor) | 368 if (m_deviceScaleFactor == scaleFactor) |
| 364 return; | 369 return; |
| 365 | 370 |
| 366 m_deviceScaleFactor = scaleFactor; | 371 m_deviceScaleFactor = scaleFactor; |
| 367 setNeedsRecalcStyleInAllFrames(); | 372 setNeedsRecalcStyleInAllFrames(); |
| 368 | 373 |
| 369 if (mainFrame()) { | 374 if (mainFrame() && mainFrame()->isLocalFrame()) { |
| 370 mainFrame()->deviceOrPageScaleFactorChanged(); | 375 deprecatedLocalMainFrame()->deviceOrPageScaleFactorChanged(); |
| 371 m_chrome->client().deviceOrPageScaleFactorChanged(); | 376 m_chrome->client().deviceOrPageScaleFactorChanged(); |
| 372 } | 377 } |
| 373 } | 378 } |
| 374 | 379 |
| 375 void Page::allVisitedStateChanged() | 380 void Page::allVisitedStateChanged() |
| 376 { | 381 { |
| 377 HashSet<Page*>::iterator pagesEnd = ordinaryPages().end(); | 382 HashSet<Page*>::iterator pagesEnd = ordinaryPages().end(); |
| 378 for (HashSet<Page*>::iterator it = ordinaryPages().begin(); it != pagesEnd;
++it) { | 383 for (HashSet<Page*>::iterator it = ordinaryPages().begin(); it != pagesEnd;
++it) { |
| 379 Page* page = *it; | 384 Page* page = *it; |
| 380 for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree(
).traverseNext()) { | 385 for (Frame* frame = page->m_mainFrame.get(); frame; frame = frame->tree(
).traverseNext()) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 m_visibilityState = visibilityState; | 445 m_visibilityState = visibilityState; |
| 441 | 446 |
| 442 if (visibilityState == WebCore::PageVisibilityStateHidden) | 447 if (visibilityState == WebCore::PageVisibilityStateHidden) |
| 443 setTimerAlignmentInterval(DOMTimer::hiddenPageAlignmentInterval()); | 448 setTimerAlignmentInterval(DOMTimer::hiddenPageAlignmentInterval()); |
| 444 else | 449 else |
| 445 setTimerAlignmentInterval(DOMTimer::visiblePageAlignmentInterval()); | 450 setTimerAlignmentInterval(DOMTimer::visiblePageAlignmentInterval()); |
| 446 | 451 |
| 447 if (!isInitialState) | 452 if (!isInitialState) |
| 448 lifecycleNotifier().notifyPageVisibilityChanged(); | 453 lifecycleNotifier().notifyPageVisibilityChanged(); |
| 449 | 454 |
| 450 if (!isInitialState && m_mainFrame) | 455 if (!isInitialState && m_mainFrame && m_mainFrame->isLocalFrame()) |
| 451 m_mainFrame->didChangeVisibilityState(); | 456 deprecatedLocalMainFrame()->didChangeVisibilityState(); |
| 452 } | 457 } |
| 453 | 458 |
| 454 PageVisibilityState Page::visibilityState() const | 459 PageVisibilityState Page::visibilityState() const |
| 455 { | 460 { |
| 456 return m_visibilityState; | 461 return m_visibilityState; |
| 457 } | 462 } |
| 458 | 463 |
| 459 bool Page::isCursorVisible() const | 464 bool Page::isCursorVisible() const |
| 460 { | 465 { |
| 461 return m_isCursorVisible && settings().deviceSupportsMouse(); | 466 return m_isCursorVisible && settings().deviceSupportsMouse(); |
| 462 } | 467 } |
| 463 | 468 |
| 464 void Page::addMultisamplingChangedObserver(MultisamplingChangedObserver* observe
r) | 469 void Page::addMultisamplingChangedObserver(MultisamplingChangedObserver* observe
r) |
| 465 { | 470 { |
| 466 m_multisamplingChangedObservers.add(observer); | 471 m_multisamplingChangedObservers.add(observer); |
| 467 } | 472 } |
| 468 | 473 |
| 469 void Page::removeMultisamplingChangedObserver(MultisamplingChangedObserver* obse
rver) | 474 void Page::removeMultisamplingChangedObserver(MultisamplingChangedObserver* obse
rver) |
| 470 { | 475 { |
| 471 m_multisamplingChangedObservers.remove(observer); | 476 m_multisamplingChangedObservers.remove(observer); |
| 472 } | 477 } |
| 473 | 478 |
| 474 void Page::settingsChanged(SettingsDelegate::ChangeType changeType) | 479 void Page::settingsChanged(SettingsDelegate::ChangeType changeType) |
| 475 { | 480 { |
| 476 switch (changeType) { | 481 switch (changeType) { |
| 477 case SettingsDelegate::StyleChange: | 482 case SettingsDelegate::StyleChange: |
| 478 setNeedsRecalcStyleInAllFrames(); | 483 setNeedsRecalcStyleInAllFrames(); |
| 479 break; | 484 break; |
| 480 case SettingsDelegate::ViewportDescriptionChange: | 485 case SettingsDelegate::ViewportDescriptionChange: |
| 481 if (mainFrame()) | 486 if (mainFrame() && mainFrame()->isLocalFrame()) |
| 482 mainFrame()->document()->updateViewportDescription(); | 487 deprecatedLocalMainFrame()->document()->updateViewportDescription(); |
| 483 break; | 488 break; |
| 484 case SettingsDelegate::MediaTypeChange: | 489 case SettingsDelegate::MediaTypeChange: |
| 485 m_mainFrame->view()->setMediaType(AtomicString(settings().mediaTypeOverr
ide())); | 490 if (m_mainFrame->isLocalFrame()) { |
| 486 setNeedsRecalcStyleInAllFrames(); | 491 deprecatedLocalMainFrame()->view()->setMediaType(AtomicString(settin
gs().mediaTypeOverride())); |
| 492 setNeedsRecalcStyleInAllFrames(); |
| 493 } |
| 487 break; | 494 break; |
| 488 case SettingsDelegate::DNSPrefetchingChange: | 495 case SettingsDelegate::DNSPrefetchingChange: |
| 489 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNe
xt()) { | 496 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNe
xt()) { |
| 490 if (frame->isLocalFrame()) | 497 if (frame->isLocalFrame()) |
| 491 toLocalFrame(frame)->document()->initDNSPrefetch(); | 498 toLocalFrame(frame)->document()->initDNSPrefetch(); |
| 492 } | 499 } |
| 493 break; | 500 break; |
| 494 case SettingsDelegate::MultisamplingChange: { | 501 case SettingsDelegate::MultisamplingChange: { |
| 495 WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserver> >
::iterator stop = m_multisamplingChangedObservers.end(); | 502 WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserver> >
::iterator stop = m_multisamplingChangedObservers.end(); |
| 496 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserv
er> >::iterator it = m_multisamplingChangedObservers.begin(); it != stop; ++it) | 503 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<MultisamplingChangedObserv
er> >::iterator it = m_multisamplingChangedObservers.begin(); it != stop; ++it) |
| 497 (*it)->multisamplingChanged(m_settings->openGLMultisamplingEnabled()
); | 504 (*it)->multisamplingChanged(m_settings->openGLMultisamplingEnabled()
); |
| 498 break; | 505 break; |
| 499 } | 506 } |
| 500 case SettingsDelegate::ImageLoadingChange: | 507 case SettingsDelegate::ImageLoadingChange: |
| 501 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNe
xt()) { | 508 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNe
xt()) { |
| 502 if (frame->isLocalFrame()) { | 509 if (frame->isLocalFrame()) { |
| 503 toLocalFrame(frame)->document()->fetcher()->setImagesEnabled(set
tings().imagesEnabled()); | 510 toLocalFrame(frame)->document()->fetcher()->setImagesEnabled(set
tings().imagesEnabled()); |
| 504 toLocalFrame(frame)->document()->fetcher()->setAutoLoadImages(se
ttings().loadsImagesAutomatically()); | 511 toLocalFrame(frame)->document()->fetcher()->setAutoLoadImages(se
ttings().loadsImagesAutomatically()); |
| 505 } | 512 } |
| 506 } | 513 } |
| 507 break; | 514 break; |
| 508 case SettingsDelegate::TextAutosizingChange: | 515 case SettingsDelegate::TextAutosizingChange: |
| 509 if (!mainFrame()) | 516 if (!mainFrame() || !mainFrame()->isLocalFrame()) |
| 510 break; | 517 break; |
| 511 if (FastTextAutosizer* textAutosizer = mainFrame()->document()->fastText
Autosizer()) { | 518 if (FastTextAutosizer* textAutosizer = deprecatedLocalMainFrame()->docum
ent()->fastTextAutosizer()) { |
| 512 textAutosizer->updatePageInfoInAllFrames(); | 519 textAutosizer->updatePageInfoInAllFrames(); |
| 513 } else { | 520 } else { |
| 514 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traver
seNext()) { | 521 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traver
seNext()) { |
| 515 if (!frame->isLocalFrame()) | 522 if (!frame->isLocalFrame()) |
| 516 continue; | 523 continue; |
| 517 if (TextAutosizer* textAutosizer = toLocalFrame(frame)->document
()->textAutosizer()) | 524 if (TextAutosizer* textAutosizer = toLocalFrame(frame)->document
()->textAutosizer()) |
| 518 textAutosizer->recalculateMultipliers(); | 525 textAutosizer->recalculateMultipliers(); |
| 519 } | 526 } |
| 520 // TextAutosizing updates RenderStyle during layout phase (via TextA
utosizer::processSubtree). | 527 // TextAutosizing updates RenderStyle during layout phase (via TextA
utosizer::processSubtree). |
| 521 // We should invoke setNeedsLayout here. | 528 // We should invoke setNeedsLayout here. |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 visitor->trace(m_multisamplingChangedObservers); | 597 visitor->trace(m_multisamplingChangedObservers); |
| 591 visitor->trace(m_frameHost); | 598 visitor->trace(m_frameHost); |
| 592 WillBeHeapSupplementable<Page>::trace(visitor); | 599 WillBeHeapSupplementable<Page>::trace(visitor); |
| 593 } | 600 } |
| 594 | 601 |
| 595 void Page::willBeDestroyed() | 602 void Page::willBeDestroyed() |
| 596 { | 603 { |
| 597 // Disable all agents prior to resetting the frame view. | 604 // Disable all agents prior to resetting the frame view. |
| 598 m_inspectorController->willBeDestroyed(); | 605 m_inspectorController->willBeDestroyed(); |
| 599 | 606 |
| 600 m_mainFrame->setView(nullptr); | 607 if (m_mainFrame->isLocalFrame()) { |
| 608 toLocalFrame(m_mainFrame.get())->setView(nullptr); |
| 609 } else { |
| 610 ASSERT(m_mainFrame->isRemoteFrame()); |
| 611 toRemoteFrame(m_mainFrame.get())->setView(nullptr); |
| 612 } |
| 601 | 613 |
| 602 allPages().remove(this); | 614 allPages().remove(this); |
| 603 if (ordinaryPages().contains(this)) | 615 if (ordinaryPages().contains(this)) |
| 604 ordinaryPages().remove(this); | 616 ordinaryPages().remove(this); |
| 605 | 617 |
| 606 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()
) { | 618 for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()
) { |
| 607 if (frame->isLocalFrame()) | 619 if (frame->isLocalFrame()) |
| 608 toLocalFrame(frame)->loader().frameDetached(); | 620 toLocalFrame(frame)->loader().frameDetached(); |
| 609 } | 621 } |
| 610 | 622 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 632 , spellCheckerClient(0) | 644 , spellCheckerClient(0) |
| 633 , storageClient(0) | 645 , storageClient(0) |
| 634 { | 646 { |
| 635 } | 647 } |
| 636 | 648 |
| 637 Page::PageClients::~PageClients() | 649 Page::PageClients::~PageClients() |
| 638 { | 650 { |
| 639 } | 651 } |
| 640 | 652 |
| 641 } // namespace WebCore | 653 } // namespace WebCore |
| OLD | NEW |