Changeset 175347 in webkit
- Timestamp:
- Oct 29, 2014, 2:59:48 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
page/Page.cpp (modified) (1 diff)
-
page/Settings.cpp (modified) (20 diffs)
-
page/Settings.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r175345 r175347 1 2014-10-29 Alexey Proskuryakov <ap@apple.com> 2 3 Notify Settings object when its Page object goes away. 4 https://bugs.webkit.org/show_bug.cgi?id=138183 5 rdar://problem/18786900 6 7 Reviewed by Andreas Kling. 8 9 I could not make a test for this issue. 10 11 * page/Page.cpp: 12 (WebCore::Page::~Page): 13 * page/Settings.cpp: 14 (WebCore::setImageLoadingSettings): 15 (WebCore::Settings::Settings): 16 (WebCore::Settings::setTextAutosizingEnabled): 17 (WebCore::Settings::setTextAutosizingWindowSizeOverride): 18 (WebCore::Settings::setTextAutosizingFontScaleFactor): 19 (WebCore::Settings::setMediaTypeOverride): 20 (WebCore::Settings::setScriptEnabled): 21 (WebCore::Settings::setUserStyleSheetLocation): 22 (WebCore::Settings::setMinDOMTimerInterval): 23 (WebCore::Settings::minDOMTimerInterval): 24 (WebCore::Settings::domTimerAlignmentInterval): 25 (WebCore::Settings::setUsesPageCache): 26 (WebCore::Settings::setScreenFontSubstitutionEnabled): 27 (WebCore::Settings::setFontRenderingMode): 28 (WebCore::Settings::setDNSPrefetchingEnabled): 29 (WebCore::Settings::setStorageBlockingPolicy): 30 (WebCore::Settings::setBackgroundShouldExtendBeyondPage): 31 (WebCore::Settings::setScrollingPerformanceLoggingEnabled): 32 (WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled): 33 (WebCore::Settings::setHiddenPageCSSAnimationSuspensionEnabled): 34 (WebCore::Settings::setFontFallbackPrefersPictographs): 35 * page/Settings.h: 36 (WebCore::Settings::pageDestroyed): 37 1 38 2014-10-29 Zalan Bujtas <zalan@apple.com> 2 39 -
trunk/Source/WebCore/page/Page.cpp
r175336 r175347 241 241 allPages->remove(this); 242 242 243 m_settings->pageDestroyed(); 244 243 245 for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) { 244 246 frame->willDetachPage(); -
trunk/Source/WebCore/page/Settings.cpp
r173949 r175347 54 54 static void setImageLoadingSettings(Page* page) 55 55 { 56 if (!page) 57 return; 58 56 59 for (Frame* frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext()) { 57 60 frame->document()->cachedResourceLoader()->setImagesEnabled(page->settings().areImagesEnabled()); … … 202 205 AtomicString::init(); 203 206 initializeDefaultFontFamilies(); 204 m_page = page; // Page is not yet fully initialized w en constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call.207 m_page = page; // Page is not yet fully initialized when constructing Settings, so keeping m_page null over initializeDefaultFontFamilies() call. 205 208 } 206 209 … … 331 334 332 335 m_textAutosizingEnabled = textAutosizingEnabled; 333 m_page->setNeedsRecalcStyleInAllFrames(); 336 if (m_page) 337 m_page->setNeedsRecalcStyleInAllFrames(); 334 338 } 335 339 … … 340 344 341 345 m_textAutosizingWindowSizeOverride = textAutosizingWindowSizeOverride; 342 m_page->setNeedsRecalcStyleInAllFrames(); 346 if (m_page) 347 m_page->setNeedsRecalcStyleInAllFrames(); 343 348 } 344 349 … … 346 351 { 347 352 m_textAutosizingFontScaleFactor = fontScaleFactor; 353 354 if (!m_page) 355 return; 348 356 349 357 // FIXME: I wonder if this needs to traverse frames like in WebViewImpl::resize, or whether there is only one document per Settings instance? … … 362 370 363 371 m_mediaTypeOverride = mediaTypeOverride; 372 373 if (!m_page) 374 return; 364 375 365 376 FrameView* view = m_page->mainFrame().view(); … … 395 406 396 407 m_isScriptEnabled = isScriptEnabled; 408 409 if (!m_page) 410 return; 411 397 412 #if PLATFORM(IOS) 398 413 m_page->setNeedsRecalcStyleInAllFrames(); … … 435 450 m_userStyleSheetLocation = userStyleSheetLocation; 436 451 437 m_page->userStyleSheetLocationChanged(); 452 if (m_page) 453 m_page->userStyleSheetLocationChanged(); 438 454 } 439 455 … … 457 473 void Settings::setMinDOMTimerInterval(double interval) 458 474 { 459 m_page->setMinimumTimerInterval(interval); 475 if (m_page) 476 m_page->setMinimumTimerInterval(interval); 460 477 } 461 478 462 479 double Settings::minDOMTimerInterval() 463 480 { 481 if (!m_page) 482 return 0; 464 483 return m_page->minimumTimerInterval(); 465 484 } … … 477 496 double Settings::domTimerAlignmentInterval() const 478 497 { 498 if (!m_page) 499 return 0; 479 500 return m_page->timerAlignmentInterval(); 480 501 } … … 493 514 494 515 m_usesPageCache = usesPageCache; 516 517 if (!m_page) 518 return; 519 495 520 if (!m_usesPageCache) { 496 521 int first = -m_page->backForward().backCount(); … … 506 531 return; 507 532 m_screenFontSubstitutionEnabled = enabled; 508 m_page->setNeedsRecalcStyleInAllFrames(); 533 534 if (m_page) 535 m_page->setNeedsRecalcStyleInAllFrames(); 509 536 } 510 537 … … 514 541 return; 515 542 m_fontRenderingMode = mode; 516 m_page->setNeedsRecalcStyleInAllFrames(); 543 if (m_page) 544 m_page->setNeedsRecalcStyleInAllFrames(); 517 545 } 518 546 … … 535 563 536 564 m_dnsPrefetchingEnabled = dnsPrefetchingEnabled; 537 m_page->dnsPrefetchingStateChanged(); 565 if (m_page) 566 m_page->dnsPrefetchingStateChanged(); 538 567 } 539 568 … … 559 588 560 589 m_storageBlockingPolicy = enabled; 561 m_page->storageBlockingStateChanged(); 590 if (m_page) 591 m_page->storageBlockingStateChanged(); 562 592 } 563 593 … … 569 599 m_backgroundShouldExtendBeyondPage = shouldExtend; 570 600 571 m_page->mainFrame().view()->updateExtendBackgroundIfNecessary(); 601 if (m_page) 602 m_page->mainFrame().view()->updateExtendBackgroundIfNecessary(); 572 603 } 573 604 … … 598 629 m_scrollingPerformanceLoggingEnabled = enabled; 599 630 600 if (m_page ->mainFrame().view())631 if (m_page && m_page->mainFrame().view()) 601 632 m_page->mainFrame().view()->setScrollingPerformanceLoggingEnabled(enabled); 602 633 } … … 640 671 return; 641 672 m_hiddenPageDOMTimerThrottlingEnabled = flag; 642 m_page->hiddenPageDOMTimerThrottlingStateChanged(); 673 if (m_page) 674 m_page->hiddenPageDOMTimerThrottlingStateChanged(); 643 675 } 644 676 #endif … … 649 681 return; 650 682 m_hiddenPageCSSAnimationSuspensionEnabled = flag; 651 m_page->hiddenPageCSSAnimationSuspensionStateChanged(); 683 if (m_page) 684 m_page->hiddenPageCSSAnimationSuspensionStateChanged(); 652 685 } 653 686 … … 658 691 659 692 m_fontFallbackPrefersPictographs = preferPictographs; 660 m_page->setNeedsRecalcStyleInAllFrames(); 693 if (m_page) 694 m_page->setNeedsRecalcStyleInAllFrames(); 661 695 } 662 696 -
trunk/Source/WebCore/page/Settings.h
r173176 r175347 67 67 ~Settings(); 68 68 69 void pageDestroyed() { m_page = nullptr; } 70 69 71 WEBCORE_EXPORT void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); 70 72 WEBCORE_EXPORT const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
Note:
See TracChangeset
for help on using the changeset viewer.