Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: test/FilterEngine.cpp

Issue 6233220328718336: Issue #3593, #1197- fix isolate management (Closed)
Left Patch Set: fix the crash (hacky) Created Nov. 16, 2015, 4:51 p.m.
Right Patch Set: rebase fix v8 initialization Created May 20, 2016, 3:22 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « test/BaseJsTest.cpp ('k') | test/Prefs.cpp » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 }; 78 };
79 79
80 MockWebRequest* mockWebRequest; 80 MockWebRequest* mockWebRequest;
81 FilterEnginePtr filterEngine; 81 FilterEnginePtr filterEngine;
82 82
83 void SetUp() 83 void SetUp()
84 { 84 {
85 AdblockPlus::AppInfo appInfo; 85 AdblockPlus::AppInfo appInfo;
86 appInfo.name = "test"; 86 appInfo.name = "test";
87 appInfo.version = "1.0.1"; 87 appInfo.version = "1.0.1";
88 AdblockPlus::JsEnginePtr jsEngine = createJsEngine(appInfo); 88 AdblockPlus::JsEnginePtr jsEngine = CreateJsEngine(appInfo);
89 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new LazyFileSystem)); 89 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(new LazyFileSystem));
90 mockWebRequest = new MockWebRequest; 90 mockWebRequest = new MockWebRequest;
91 jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(mockWebRequest)); 91 jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(mockWebRequest));
92 filterEngine = FilterEnginePtr(new AdblockPlus::FilterEngine(jsEngine)); 92 filterEngine = FilterEnginePtr(new AdblockPlus::FilterEngine(jsEngine));
93 } 93 }
94 }; 94 };
95 95
96 struct MockUpdateAvailableCallback 96 struct MockUpdateAvailableCallback
97 { 97 {
98 MockUpdateAvailableCallback(int& timesCalled) : timesCalled(timesCalled) {} 98 MockUpdateAvailableCallback(int& timesCalled) : timesCalled(timesCalled) {}
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 ASSERT_TRUE(match1); 273 ASSERT_TRUE(match1);
274 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match1->GetType()); 274 ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match1->GetType());
275 275
276 AdblockPlus::FilterPtr match2 = 276 AdblockPlus::FilterPtr match2 =
277 filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngi ne::CONTENT_TYPE_IMAGE, 277 filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngi ne::CONTENT_TYPE_IMAGE,
278 "http://example.org/"); 278 "http://example.org/");
279 ASSERT_TRUE(match2); 279 ASSERT_TRUE(match2);
280 ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match2->GetType()); 280 ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match2->GetType());
281 } 281 }
282 282
283 TEST_F(FilterEngineTest, MatchesWithContentTypeMask)
284 {
285 filterEngine->GetFilter("adbanner.gif.js$script,image")->AddToList();
286 filterEngine->GetFilter("@@notbanner.gif")->AddToList();
287 filterEngine->GetFilter("blockme")->AddToList();
288 filterEngine->GetFilter("@@||example.doc^$document")->AddToList();
289
290 EXPECT_FALSE(filterEngine->Matches("http://example.org/foobar.gif",
291 AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""))
292 << "another url should not match";
293
294 EXPECT_FALSE(filterEngine->Matches("http://example.org/adbanner.gif.js",
295 /*mask*/ 0, "")) << "zero mask should not match (filter with some options)";
296
297 EXPECT_FALSE(filterEngine->Matches("http://example.xxx/blockme",
298 /*mask*/ 0, "")) << "zero mask should not match (filter without any option)" ;
299
300 EXPECT_FALSE(filterEngine->Matches("http://example.org/adbanner.gif.js",
301 AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, ""))
302 << "one arbitrary flag in mask should not match";
303
304 EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js",
305 AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE |
306 AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, ""))
307 << "one of flags in mask should match";
308
309 EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js",
310 AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE |
311 AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT, ""))
312 << "both flags in mask should match";
313
314 EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js",
315 AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE |
316 AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT |
317 AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, ""))
318 << "both flags with another flag in mask should match";
319
320 EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js",
321 AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT |
322 AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, ""))
323 << "one of flags in mask should match";
324
325 {
326 AdblockPlus::FilterPtr filter;
327 ASSERT_TRUE(filter = filterEngine->Matches("http://child.any/blockme",
328 AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT |
329 AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "http://example.doc"))
330 << "non-zero mask should match on whitelisted document";
331
332 EXPECT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter->GetType());
333 }
334
335 {
336 AdblockPlus::FilterPtr filter;
337 ASSERT_TRUE(filter = filterEngine->Matches("http://example.doc/blockme",
338 /*mask*/0, "http://example.doc"))
339 << "zero mask should match when document is whitelisted";
340
341 EXPECT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter->GetType());
342 }
343 }
344
283 TEST_F(FilterEngineTest, MatchesNestedFrameRequest) 345 TEST_F(FilterEngineTest, MatchesNestedFrameRequest)
284 { 346 {
285 filterEngine->GetFilter("adbanner.gif")->AddToList(); 347 filterEngine->GetFilter("adbanner.gif")->AddToList();
286 filterEngine->GetFilter("@@adbanner.gif$domain=example.org")->AddToList(); 348 filterEngine->GetFilter("@@adbanner.gif$domain=example.org")->AddToList();
287 349
288 std::vector<std::string> documentUrls1; 350 std::vector<std::string> documentUrls1;
289 documentUrls1.push_back("http://ads.com/frame/"); 351 documentUrls1.push_back("http://ads.com/frame/");
290 documentUrls1.push_back("http://example.com/"); 352 documentUrls1.push_back("http://example.com/");
291 AdblockPlus::FilterPtr match1 = 353 AdblockPlus::FilterPtr match1 =
292 filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngi ne::CONTENT_TYPE_IMAGE, 354 filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngi ne::CONTENT_TYPE_IMAGE,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 ASSERT_TRUE(filterEngine->IsFirstRun()); 436 ASSERT_TRUE(filterEngine->IsFirstRun());
375 } 437 }
376 438
377 TEST_F(FilterEngineTest, SetRemoveFilterChangeCallback) 439 TEST_F(FilterEngineTest, SetRemoveFilterChangeCallback)
378 { 440 {
379 int timesCalled = 0; 441 int timesCalled = 0;
380 MockFilterChangeCallback mockFilterChangeCallback(timesCalled); 442 MockFilterChangeCallback mockFilterChangeCallback(timesCalled);
381 443
382 filterEngine->SetFilterChangeCallback(mockFilterChangeCallback); 444 filterEngine->SetFilterChangeCallback(mockFilterChangeCallback);
383 filterEngine->GetFilter("foo")->AddToList(); 445 filterEngine->GetFilter("foo")->AddToList();
384 EXPECT_EQ(2, timesCalled); 446 EXPECT_EQ(1, timesCalled);
385 447
386 filterEngine->RemoveFilterChangeCallback(); 448 filterEngine->RemoveFilterChangeCallback();
387 filterEngine->GetFilter("foo")->RemoveFromList(); 449 filterEngine->GetFilter("foo")->RemoveFromList();
388 EXPECT_EQ(2, timesCalled); 450 EXPECT_EQ(1, timesCalled);
389 } 451 }
390 452
391 TEST_F(UpdaterTest, SetRemoveUpdateAvailableCallback) 453 TEST_F(UpdaterTest, SetRemoveUpdateAvailableCallback)
392 { 454 {
393 mockWebRequest->response.status = 0; 455 mockWebRequest->response.status = 0;
394 mockWebRequest->response.responseStatus = 200; 456 mockWebRequest->response.responseStatus = 200;
395 mockWebRequest->response.responseText = "\ 457 mockWebRequest->response.responseText = "\
396 {\ 458 {\
397 \"test\": {\ 459 \"test\": {\
398 \"version\": \"1.0.2\",\ 460 \"version\": \"1.0.2\",\
399 \"url\": \"https://downloads.adblockplus.org/test-1.0.2.tar.gz?update\"\ 461 \"url\": \"https://downloads.adblockplus.org/test-1.0.2.tar.gz?update\"\
400 }\ 462 }\
401 }"; 463 }";
402 464
403 int timesCalled = 0; 465 int timesCalled = 0;
404 MockUpdateAvailableCallback mockUpdateAvailableCallback(timesCalled); 466 MockUpdateAvailableCallback mockUpdateAvailableCallback(timesCalled);
405 467
406 filterEngine->SetUpdateAvailableCallback(mockUpdateAvailableCallback); 468 filterEngine->SetUpdateAvailableCallback(mockUpdateAvailableCallback);
407 filterEngine->ForceUpdateCheck(&NoOpUpdaterCallback); 469 filterEngine->ForceUpdateCheck(&NoOpUpdaterCallback);
408 AdblockPlus::Sleep(100); 470 AdblockPlus::Sleep(100);
409 ASSERT_EQ(1, timesCalled); 471 ASSERT_EQ(1, timesCalled);
410 472
411 filterEngine->RemoveUpdateAvailableCallback(); 473 filterEngine->RemoveUpdateAvailableCallback();
412 filterEngine->ForceUpdateCheck(&NoOpUpdaterCallback); 474 filterEngine->ForceUpdateCheck(&NoOpUpdaterCallback);
413 AdblockPlus::Sleep(100); 475 AdblockPlus::Sleep(100);
414 ASSERT_EQ(1, timesCalled); 476 ASSERT_EQ(1, timesCalled);
415 } 477 }
478
479 TEST_F(FilterEngineTest, DocumentWhitelisting)
480 {
481 filterEngine->GetFilter("@@||example.org^$document")->AddToList();
482 filterEngine->GetFilter("@@||example.com^$document,domain=example.de")->AddToL ist();
483
484 ASSERT_TRUE(filterEngine->IsDocumentWhitelisted(
485 "http://example.org",
486 std::vector<std::string>()));
487
488 ASSERT_FALSE(filterEngine->IsDocumentWhitelisted(
489 "http://example.co.uk",
490 std::vector<std::string>()));
491
492 ASSERT_FALSE(filterEngine->IsDocumentWhitelisted(
493 "http://example.com",
494 std::vector<std::string>()));
495
496 std::vector<std::string> documentUrls1;
497 documentUrls1.push_back("http://example.de");
498
499 ASSERT_TRUE(filterEngine->IsDocumentWhitelisted(
500 "http://example.com",
501 documentUrls1));
502
503 ASSERT_FALSE(filterEngine->IsDocumentWhitelisted(
504 "http://example.co.uk",
505 documentUrls1));
506 }
507
508 TEST_F(FilterEngineTest, ElemhideWhitelisting)
509 {
510 filterEngine->GetFilter("@@||example.org^$elemhide")->AddToList();
511 filterEngine->GetFilter("@@||example.com^$elemhide,domain=example.de")->AddToL ist();
512
513 ASSERT_TRUE(filterEngine->IsElemhideWhitelisted(
514 "http://example.org",
515 std::vector<std::string>()));
516
517 ASSERT_FALSE(filterEngine->IsElemhideWhitelisted(
518 "http://example.co.uk",
519 std::vector<std::string>()));
520
521 ASSERT_FALSE(filterEngine->IsElemhideWhitelisted(
522 "http://example.com",
523 std::vector<std::string>()));
524
525 std::vector<std::string> documentUrls1;
526 documentUrls1.push_back("http://example.de");
527
528 ASSERT_TRUE(filterEngine->IsElemhideWhitelisted(
529 "http://example.com",
530 documentUrls1));
531
532 ASSERT_FALSE(filterEngine->IsElemhideWhitelisted(
533 "http://example.co.uk",
534 documentUrls1));
535 }
LEFTRIGHT

Powered by Google App Engine
This is Rietveld