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 |