From c1416369812a7eeaebe4a39a2d3fc2ffab03139d Mon Sep 17 00:00:00 2001 From: "Shimeng (Simon) Wang" Date: Thu, 6 Jan 2011 14:14:18 -0800 Subject: Not set max decoded image size in WebCore. Two reasons: 1. the image size will be limited in ImageSourceAndroid.cpp. 2. WebCore will do an estimation comparison against that max value, which will limit some good cases. For example, in the case of the following bug, the background image size is limited and good, but its estimation value in WebCore will exceed the max. issue: 3240499 Change-Id: I721c7565beb648dd83200d05e223012299997e04 --- WebKit/android/jni/WebSettings.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'WebKit/android/jni/WebSettings.cpp') diff --git a/WebKit/android/jni/WebSettings.cpp b/WebKit/android/jni/WebSettings.cpp index c971493..e4b30c3 100644 --- a/WebKit/android/jni/WebSettings.cpp +++ b/WebKit/android/jni/WebSettings.cpp @@ -452,8 +452,15 @@ public: flag = env->GetBooleanField(obj, gFieldIds->mShrinksStandaloneImagesToFit); s->setShrinksStandaloneImagesToFit(flag); jlong maxImage = env->GetLongField(obj, gFieldIds->mMaximumDecodedImageSize); - if (maxImage == 0) - maxImage = computeMaxBitmapSizeForCache(); + // Since in ImageSourceAndroid.cpp, the image will always not exceed + // MAX_SIZE_BEFORE_SUBSAMPLE, there's no need to pass the max value to + // WebCore, which checks (image_width * image_height * 4) as an + // estimation against the max value, which is done in CachedImage.cpp. + // And there're cases where the decoded image size will not + // exceed the max, but the WebCore estimation will. So the following + // code is commented out to fix those cases. + // if (maxImage == 0) + // maxImage = computeMaxBitmapSizeForCache(); s->setMaximumDecodedImageSize(maxImage); flag = env->GetBooleanField(obj, gFieldIds->mPrivateBrowsingEnabled); -- cgit v1.1