Added a manual test to test calling window.print on a subframe.
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Jul 2007 22:09:05 +0000 (22:09 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Jul 2007 22:09:05 +0000 (22:09 +0000)
        Reviewed by Darin.

        * manual-tests/resources/print-subframe.html: Added.
        * manual-tests/window-print-subframe.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@24332 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/win/FontCacheWin.cpp

index b90e5d7dc7b822ae28cbb447b60e86c062c89ce0..b483a4ef511337918f499ff809264fe8c49211f3 100644 (file)
         ditto.  We already had checks to prevent drawing the text that considered the option's style too, but if visibility: hidden
         was just set on the listbox then a lot of extra work was being done, and the scrollbar was drawing too.  This change fixes that.
 
+2007-07-16  David Hyatt  <hyatt@apple.com>
+
+        Fix for 5335829, avoid creating a pathological # of FontData objects
+        on Windows.  The MLang service actually caches and reuses HFONTs, which
+        means it is safe to use our FontPlatformData -> FontData cache.
+
+        Reviewed by olliej
+
+        * platform/win/FontCacheWin.cpp:
+        (WebCore::FontCache::getFontDataForCharacters):
+
 2007-07-16  David Hyatt  <hyatt@apple.com>
 
         Fix for Radar 5338081, text-shadow should be reset on form controls so that
index c35fd2394ea9db35b7965fbce13a1faecd043d16..ed4c947b7cff472d73d548bdf374fdab824707d8 100644 (file)
@@ -84,7 +84,10 @@ const FontData* FontCache::getFontDataForCharacters(const Font& font, const UCha
     if (cchActual) {
         HFONT result;
         if (langFontLink->MapFont(hdc, actualCodePages, characters[0], &result) == S_OK) {
-            fontData = new FontData(FontPlatformData(result, font.fontDescription().computedPixelSize(), font.fontDescription().bold(), font.fontDescription().italic()));
+            // MLang has an internal cache, which means it really will hand back the same HFONT pointer if it can.  We can
+            // therefore safely use our hash on HFONT pointers (FontPlatformData -> FontData) and actually expect it to work.
+            FontPlatformData platformData(result, font.fontDescription().computedPixelSize(), font.fontDescription().bold(), font.fontDescription().italic());
+            fontData = getCachedFontData(&platformData);
             fontData->setIsMLangFont();
         }
     }