OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 3136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3147 "border: 2px solid skyblue; float: left; width: 190px; height: 30px; " | 3147 "border: 2px solid skyblue; float: left; width: 190px; height: 30px; " |
3148 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3148 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
3149 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3149 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
3150 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3150 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
3151 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3151 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
3152 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3152 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
3153 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3153 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
3154 "10,000,000won</div>"; | 3154 "10,000,000won</div>"; |
3155 WebString clipText; | 3155 WebString clipText; |
3156 WebString clipHtml; | 3156 WebString clipHtml; |
3157 WebRect clipRect; | |
3158 URLTestHelpers::registerMockedURLFromBaseURL( | 3157 URLTestHelpers::registerMockedURLFromBaseURL( |
3159 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3158 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); |
3160 URLTestHelpers::registerMockedURLFromBaseURL( | 3159 URLTestHelpers::registerMockedURLFromBaseURL( |
3161 WebString::fromUTF8(m_baseURL.c_str()), | 3160 WebString::fromUTF8(m_baseURL.c_str()), |
3162 WebString::fromUTF8("smartclip.html")); | 3161 WebString::fromUTF8("smartclip.html")); |
3163 WebView* webView = | 3162 WebViewImpl* webView = |
3164 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); | 3163 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); |
3165 webView->resize(WebSize(500, 500)); | 3164 webView->resize(WebSize(500, 500)); |
3166 webView->updateAllLifecyclePhases(); | 3165 webView->updateAllLifecyclePhases(); |
3167 WebRect cropRect(300, 125, 152, 50); | 3166 WebRect cropRect(300, 125, 152, 50); |
3168 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3167 webView->mainFrameImpl()->extractSmartClipData(cropRect, clipText, clipHtml); |
3169 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); | 3168 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); |
3170 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); | 3169 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); |
3171 } | 3170 } |
3172 | 3171 |
3173 TEST_P(WebViewTest, SmartClipDataWithPinchZoom) { | 3172 TEST_P(WebViewTest, SmartClipDataWithPinchZoom) { |
3174 static const char kExpectedClipText[] = "\nPrice 10,000,000won"; | 3173 static const char kExpectedClipText[] = "\nPrice 10,000,000won"; |
3175 static const char kExpectedClipHtml[] = | 3174 static const char kExpectedClipHtml[] = |
3176 "<div id=\"div4\" style=\"padding: 10px; margin: 10px; border: 2px " | 3175 "<div id=\"div4\" style=\"padding: 10px; margin: 10px; border: 2px " |
3177 "solid skyblue; float: left; width: 190px; height: 30px; " | 3176 "solid skyblue; float: left; width: 190px; height: 30px; " |
3178 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3177 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
3179 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3178 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
3180 "font-weight: normal; letter-spacing: " | 3179 "font-weight: normal; letter-spacing: " |
3181 "normal; orphans: 2; text-align: start; " | 3180 "normal; orphans: 2; text-align: start; " |
3182 "text-indent: 0px; text-transform: none; white-space: normal; widows: " | 3181 "text-indent: 0px; text-transform: none; white-space: normal; widows: " |
3183 "2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3182 "2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
3184 "text-decoration-style: initial; text-decoration-color: initial;\">Air " | 3183 "text-decoration-style: initial; text-decoration-color: initial;\">Air " |
3185 "conditioner</div><div id=\"div5\" style=\"padding: 10px; margin: 10px; " | 3184 "conditioner</div><div id=\"div5\" style=\"padding: 10px; margin: 10px; " |
3186 "border: 2px solid skyblue; float: left; width: 190px; height: 30px; " | 3185 "border: 2px solid skyblue; float: left; width: 190px; height: 30px; " |
3187 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3186 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
3188 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3187 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
3189 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3188 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
3190 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3189 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
3191 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3190 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
3192 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3191 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
3193 "10,000,000won</div>"; | 3192 "10,000,000won</div>"; |
3194 WebString clipText; | 3193 WebString clipText; |
3195 WebString clipHtml; | 3194 WebString clipHtml; |
3196 WebRect clipRect; | |
3197 URLTestHelpers::registerMockedURLFromBaseURL( | 3195 URLTestHelpers::registerMockedURLFromBaseURL( |
3198 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3196 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); |
3199 URLTestHelpers::registerMockedURLFromBaseURL( | 3197 URLTestHelpers::registerMockedURLFromBaseURL( |
3200 WebString::fromUTF8(m_baseURL.c_str()), | 3198 WebString::fromUTF8(m_baseURL.c_str()), |
3201 WebString::fromUTF8("smartclip.html")); | 3199 WebString::fromUTF8("smartclip.html")); |
3202 WebView* webView = | 3200 WebViewImpl* webView = |
3203 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); | 3201 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); |
3204 webView->resize(WebSize(500, 500)); | 3202 webView->resize(WebSize(500, 500)); |
3205 webView->updateAllLifecyclePhases(); | 3203 webView->updateAllLifecyclePhases(); |
3206 webView->setPageScaleFactor(1.5); | 3204 webView->setPageScaleFactor(1.5); |
3207 webView->setVisualViewportOffset(WebFloatPoint(167, 100)); | 3205 webView->setVisualViewportOffset(WebFloatPoint(167, 100)); |
3208 WebRect cropRect(200, 38, 228, 75); | 3206 WebRect cropRect(200, 38, 228, 75); |
3209 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3207 webView->mainFrameImpl()->extractSmartClipData(cropRect, clipText, clipHtml); |
3210 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); | 3208 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); |
3211 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); | 3209 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); |
3212 } | 3210 } |
3213 | 3211 |
3214 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { | 3212 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { |
3215 WebString clipText; | 3213 WebString clipText; |
3216 WebString clipHtml; | 3214 WebString clipHtml; |
3217 WebRect clipRect; | |
3218 URLTestHelpers::registerMockedURLFromBaseURL( | 3215 URLTestHelpers::registerMockedURLFromBaseURL( |
3219 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3216 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); |
3220 URLTestHelpers::registerMockedURLFromBaseURL( | 3217 URLTestHelpers::registerMockedURLFromBaseURL( |
3221 WebString::fromUTF8(m_baseURL.c_str()), | 3218 WebString::fromUTF8(m_baseURL.c_str()), |
3222 WebString::fromUTF8("smartclip_user_select_none.html")); | 3219 WebString::fromUTF8("smartclip_user_select_none.html")); |
3223 WebView* webView = m_webViewHelper.initializeAndLoad( | 3220 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
3224 m_baseURL + "smartclip_user_select_none.html"); | 3221 m_baseURL + "smartclip_user_select_none.html"); |
3225 webView->resize(WebSize(500, 500)); | 3222 webView->resize(WebSize(500, 500)); |
3226 webView->updateAllLifecyclePhases(); | 3223 webView->updateAllLifecyclePhases(); |
3227 WebRect cropRect(0, 0, 100, 100); | 3224 WebRect cropRect(0, 0, 100, 100); |
3228 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3225 webView->mainFrameImpl()->extractSmartClipData(cropRect, clipText, clipHtml); |
3229 EXPECT_STREQ("", clipText.utf8().c_str()); | 3226 EXPECT_STREQ("", clipText.utf8().c_str()); |
3230 EXPECT_STREQ("", clipHtml.utf8().c_str()); | 3227 EXPECT_STREQ("", clipHtml.utf8().c_str()); |
3231 } | 3228 } |
3232 | 3229 |
3233 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { | 3230 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { |
3234 WebString clipText; | 3231 WebString clipText; |
3235 WebString clipHtml; | 3232 WebString clipHtml; |
3236 WebRect clipRect; | |
3237 URLTestHelpers::registerMockedURLFromBaseURL( | 3233 URLTestHelpers::registerMockedURLFromBaseURL( |
3238 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3234 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); |
3239 URLTestHelpers::registerMockedURLFromBaseURL( | 3235 URLTestHelpers::registerMockedURLFromBaseURL( |
3240 WebString::fromUTF8(m_baseURL.c_str()), | 3236 WebString::fromUTF8(m_baseURL.c_str()), |
3241 WebString::fromUTF8("smartclip_reversed_positions.html")); | 3237 WebString::fromUTF8("smartclip_reversed_positions.html")); |
3242 WebView* webView = m_webViewHelper.initializeAndLoad( | 3238 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
3243 m_baseURL + "smartclip_reversed_positions.html"); | 3239 m_baseURL + "smartclip_reversed_positions.html"); |
3244 webView->resize(WebSize(500, 500)); | 3240 webView->resize(WebSize(500, 500)); |
3245 webView->updateAllLifecyclePhases(); | 3241 webView->updateAllLifecyclePhases(); |
3246 // Left upper corner of the rect will be end position in the DOM hierarchy. | 3242 // Left upper corner of the rect will be end position in the DOM hierarchy. |
3247 WebRect cropRect(30, 110, 400, 250); | 3243 WebRect cropRect(30, 110, 400, 250); |
3248 // This should not still crash. See crbug.com/589082 for more details. | 3244 // This should not still crash. See crbug.com/589082 for more details. |
3249 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3245 webView->mainFrameImpl()->extractSmartClipData(cropRect, clipText, clipHtml); |
3250 } | 3246 } |
3251 | 3247 |
3252 class CreateChildCounterFrameClient | 3248 class CreateChildCounterFrameClient |
3253 : public FrameTestHelpers::TestWebFrameClient { | 3249 : public FrameTestHelpers::TestWebFrameClient { |
3254 public: | 3250 public: |
3255 CreateChildCounterFrameClient() : m_count(0) {} | 3251 CreateChildCounterFrameClient() : m_count(0) {} |
3256 WebLocalFrame* createChildFrame(WebLocalFrame* parent, | 3252 WebLocalFrame* createChildFrame(WebLocalFrame* parent, |
3257 WebTreeScopeType, | 3253 WebTreeScopeType, |
3258 const WebString& name, | 3254 const WebString& name, |
3259 const WebString& uniqueName, | 3255 const WebString& uniqueName, |
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4373 EXPECT_EQ(expectedWidth, vwElement->offsetWidth()); | 4369 EXPECT_EQ(expectedWidth, vwElement->offsetWidth()); |
4374 EXPECT_EQ(expectedHeight, vwElement->offsetHeight()); | 4370 EXPECT_EQ(expectedHeight, vwElement->offsetHeight()); |
4375 | 4371 |
4376 webView->resize(WebSize(800, 600)); | 4372 webView->resize(WebSize(800, 600)); |
4377 frame->printEnd(); | 4373 frame->printEnd(); |
4378 | 4374 |
4379 EXPECT_EQ(800, vwElement->offsetWidth()); | 4375 EXPECT_EQ(800, vwElement->offsetWidth()); |
4380 } | 4376 } |
4381 | 4377 |
4382 } // namespace blink | 4378 } // namespace blink |
OLD | NEW |