Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameSerializerTest.cpp

Issue 2841223002: Add UMA for popup overlays removed from saved MHTML page (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 12 matching lines...) Expand all
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "public/web/WebFrameSerializer.h" 31 #include "public/web/WebFrameSerializer.h"
32 32
33 #include "platform/testing/HistogramTester.h"
33 #include "platform/testing/URLTestHelpers.h" 34 #include "platform/testing/URLTestHelpers.h"
34 #include "platform/testing/UnitTestHelpers.h" 35 #include "platform/testing/UnitTestHelpers.h"
35 #include "platform/weborigin/KURL.h" 36 #include "platform/weborigin/KURL.h"
36 #include "platform/wtf/text/StringBuilder.h" 37 #include "platform/wtf/text/StringBuilder.h"
37 #include "public/platform/Platform.h" 38 #include "public/platform/Platform.h"
38 #include "public/platform/WebCString.h" 39 #include "public/platform/WebCString.h"
39 #include "public/platform/WebCache.h" 40 #include "public/platform/WebCache.h"
40 #include "public/platform/WebString.h" 41 #include "public/platform/WebString.h"
41 #include "public/platform/WebURL.h" 42 #include "public/platform/WebURL.h"
42 #include "public/platform/WebURLLoaderMockFactory.h" 43 #include "public/platform/WebURLLoaderMockFactory.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 FrameTestHelpers::LoadFrame(MainFrameImpl(), url.Utf8().data()); 228 FrameTestHelpers::LoadFrame(MainFrameImpl(), url.Utf8().data());
228 WebThreadSafeData result = WebFrameSerializer::GenerateMHTMLParts( 229 WebThreadSafeData result = WebFrameSerializer::GenerateMHTMLParts(
229 WebString("boundary"), MainFrameImpl(), &mhtml_delegate_); 230 WebString("boundary"), MainFrameImpl(), &mhtml_delegate_);
230 return String(result.Data(), result.size()); 231 return String(result.Data(), result.size());
231 } 232 }
232 233
233 void SetRemovePopupOverlay(bool remove_popup_overlay) { 234 void SetRemovePopupOverlay(bool remove_popup_overlay) {
234 mhtml_delegate_.SetRemovePopupOverlay(remove_popup_overlay); 235 mhtml_delegate_.SetRemovePopupOverlay(remove_popup_overlay);
235 } 236 }
236 237
238 protected:
239 HistogramTester histogram_tester_;
240
237 private: 241 private:
238 SimpleMHTMLPartsGenerationDelegate mhtml_delegate_; 242 SimpleMHTMLPartsGenerationDelegate mhtml_delegate_;
239 }; 243 };
240 244
241 TEST_F(WebFrameSerializerSanitizationTest, RemoveInlineScriptInAttributes) { 245 TEST_F(WebFrameSerializerSanitizationTest, RemoveInlineScriptInAttributes) {
242 String mhtml = 246 String mhtml =
243 GenerateMHTMLParts("http://www.test.com", "script_in_attributes.html"); 247 GenerateMHTMLParts("http://www.test.com", "script_in_attributes.html");
244 248
245 // These scripting attributes should be removed. 249 // These scripting attributes should be removed.
246 EXPECT_EQ(WTF::kNotFound, mhtml.Find("onload=")); 250 EXPECT_EQ(WTF::kNotFound, mhtml.Find("onload="));
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 EXPECT_NE(WTF::kNotFound, mhtml.Find("id=3D\"i1\">")); 356 EXPECT_NE(WTF::kNotFound, mhtml.Find("id=3D\"i1\">"));
353 EXPECT_NE(WTF::kNotFound, mhtml.Find("id=3D\"i2\" width=3D\"8\">")); 357 EXPECT_NE(WTF::kNotFound, mhtml.Find("id=3D\"i2\" width=3D\"8\">"));
354 } 358 }
355 359
356 TEST_F(WebFrameSerializerSanitizationTest, RemovePopupOverlayIfRequested) { 360 TEST_F(WebFrameSerializerSanitizationTest, RemovePopupOverlayIfRequested) {
357 WebView()->Resize(WebSize(500, 500)); 361 WebView()->Resize(WebSize(500, 500));
358 SetRemovePopupOverlay(true); 362 SetRemovePopupOverlay(true);
359 String mhtml = GenerateMHTMLParts("http://www.test.com", "popup.html"); 363 String mhtml = GenerateMHTMLParts("http://www.test.com", "popup.html");
360 EXPECT_EQ(WTF::kNotFound, mhtml.Find("class=3D\"overlay")); 364 EXPECT_EQ(WTF::kNotFound, mhtml.Find("class=3D\"overlay"));
361 EXPECT_EQ(WTF::kNotFound, mhtml.Find("class=3D\"modal")); 365 EXPECT_EQ(WTF::kNotFound, mhtml.Find("class=3D\"modal"));
366 histogram_tester_.ExpectTotalCount(
367 "PageSerialization.MhtmlGeneration.PopupOverlaySkippedCount", 1);
368 }
369
370 TEST_F(WebFrameSerializerSanitizationTest, PopupOverlayNotFound) {
371 WebView()->Resize(WebSize(500, 500));
372 SetRemovePopupOverlay(true);
373 String mhtml =
374 GenerateMHTMLParts("http://www.test.com", "text_only_page.html");
375 histogram_tester_.ExpectTotalCount(
376 "PageSerialization.MhtmlGeneration.PopupOverlaySkippedCount", 0);
362 } 377 }
363 378
364 TEST_F(WebFrameSerializerSanitizationTest, KeepPopupOverlayIfNotRequested) { 379 TEST_F(WebFrameSerializerSanitizationTest, KeepPopupOverlayIfNotRequested) {
365 WebView()->Resize(WebSize(500, 500)); 380 WebView()->Resize(WebSize(500, 500));
366 SetRemovePopupOverlay(false); 381 SetRemovePopupOverlay(false);
367 String mhtml = GenerateMHTMLParts("http://www.test.com", "popup.html"); 382 String mhtml = GenerateMHTMLParts("http://www.test.com", "popup.html");
368 EXPECT_NE(WTF::kNotFound, mhtml.Find("class=3D\"overlay")); 383 EXPECT_NE(WTF::kNotFound, mhtml.Find("class=3D\"overlay"));
369 EXPECT_NE(WTF::kNotFound, mhtml.Find("class=3D\"modal")); 384 EXPECT_NE(WTF::kNotFound, mhtml.Find("class=3D\"modal"));
385 histogram_tester_.ExpectTotalCount(
386 "PageSerialization.MhtmlGeneration.PopupOverlaySkippedCount", 0);
370 } 387 }
371 388
372 TEST_F(WebFrameSerializerSanitizationTest, RemoveElements) { 389 TEST_F(WebFrameSerializerSanitizationTest, RemoveElements) {
373 String mhtml = 390 String mhtml =
374 GenerateMHTMLParts("http://www.test.com", "remove_elements.html"); 391 GenerateMHTMLParts("http://www.test.com", "remove_elements.html");
375 LOG(ERROR) << mhtml; 392 LOG(ERROR) << mhtml;
376 393
377 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<script")); 394 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<script"));
378 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<noscript")); 395 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<noscript"));
379 396
380 // Only the meta element containing "Content-Security-Policy" is removed. 397 // Only the meta element containing "Content-Security-Policy" is removed.
381 // Other meta elements should be preserved. 398 // Other meta elements should be preserved.
382 EXPECT_EQ(WTF::kNotFound, 399 EXPECT_EQ(WTF::kNotFound,
383 mhtml.Find("<meta http-equiv=3D\"Content-Security-Policy")); 400 mhtml.Find("<meta http-equiv=3D\"Content-Security-Policy"));
384 EXPECT_NE(WTF::kNotFound, mhtml.Find("<meta name=3D\"description")); 401 EXPECT_NE(WTF::kNotFound, mhtml.Find("<meta name=3D\"description"));
385 EXPECT_NE(WTF::kNotFound, mhtml.Find("<meta http-equiv=3D\"refresh")); 402 EXPECT_NE(WTF::kNotFound, mhtml.Find("<meta http-equiv=3D\"refresh"));
386 403
387 // If an element is removed, its children should also be skipped. 404 // If an element is removed, its children should also be skipped.
388 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<select")); 405 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<select"));
389 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<option")); 406 EXPECT_EQ(WTF::kNotFound, mhtml.Find("<option"));
390 } 407 }
391 408
392 } // namespace blink 409 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698