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

Unified Diff: components/web_restrictions/browser/web_restrictions_resource_throttle_unittest.cc

Issue 1684153002: Web restrictions component. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary file Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: components/web_restrictions/browser/web_restrictions_resource_throttle_unittest.cc
diff --git a/components/web_restrictions/browser/web_restrictions_resource_throttle_unittest.cc b/components/web_restrictions/browser/web_restrictions_resource_throttle_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..394d505538414ae281b8591735828864d9d441fb
--- /dev/null
+++ b/components/web_restrictions/browser/web_restrictions_resource_throttle_unittest.cc
@@ -0,0 +1,120 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/bind.h"
+#include "base/run_loop.h"
+#include "components/web_restrictions/browser/web_restrictions_client.h"
+#include "components/web_restrictions/browser/web_restrictions_resource_throttle.h"
+#include "content/public/browser/resource_controller.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "net/base/net_errors.h"
+#include "net/url_request/redirect_info.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace web_restrictions {
+
+namespace {
+
+class TestResourceController : public content::ResourceController {
+ public:
+ bool resume_called_;
Bernhard Bauer 2016/02/19 13:46:26 Add accessor for these (at least the ones you need
aberent 2016/02/19 19:40:09 Done.
+ bool cancel_with_error_called_;
+ int error_code_;
+ base::Closure quit_closure_;
+
+ TestResourceController(const base::Closure quit_closure)
Bernhard Bauer 2016/02/19 13:46:26 Pass by const ref.
aberent 2016/02/19 19:40:09 Done.
+ : quit_closure_(quit_closure) {}
+
+ void Cancel() override {}
+ void CancelAndIgnore() override {}
+ void CancelWithError(int error_code) override {
+ cancel_with_error_called_ = true;
+ error_code_ = error_code;
+ quit_closure_.Run();
+ }
+ void Resume() override {
+ resume_called_ = true;
+ quit_closure_.Run();
+ }
+};
+
+} // namespace
+
+/*
+ * Tests of C++ WebRestrictionsResourceThrottle. Note that these tests use a
+ * dummy version of the Java WebRestrictionsClient which gives predefined
+ * responses based on the authority and the URL. They will not work if
+ * built with the real version of the Java WebRestrictionsClient.
+ */
+
+TEST(WebRestrictionsResourceThrottle, TestWillStartRequest) {
+ content::TestBrowserThreadBundle thread_bundle;
Bernhard Bauer 2016/02/19 13:46:26 It might be worth moving these into a test fixture
aberent 2016/02/19 19:40:09 Done.
+ WebRestrictionsClient provider;
+ WebRestrictionsResourceThrottle throttle(&provider,
+ GURL("http://example.com"), true);
+ bool defer;
+ throttle.WillStartRequest(&defer);
+ // If there is no authority the request won't be deferred.
+ EXPECT_FALSE(defer);
+
+ // Test deferring with a resouce provider, and that the correct results
+ // are received.
+ provider.SetAuthority("Good");
+ base::RunLoop run_loop;
+ TestResourceController controller(run_loop.QuitClosure());
+ throttle.set_controller_for_testing(&controller);
+ throttle.WillStartRequest(&defer);
+ EXPECT_TRUE(defer);
+ run_loop.Run();
+ EXPECT_TRUE(controller.resume_called_);
+ EXPECT_FALSE(controller.cancel_with_error_called_);
+ provider.SetAuthority("Bad");
+ base::RunLoop run_loop2;
+ TestResourceController controller2(run_loop2.QuitClosure());
+ throttle.set_controller_for_testing(&controller2);
+ throttle.WillStartRequest(&defer);
+ EXPECT_TRUE(defer);
+ run_loop2.Run();
+ EXPECT_FALSE(controller2.resume_called_);
+ EXPECT_TRUE(controller2.cancel_with_error_called_);
+ EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, controller2.error_code_);
+
+ // Only the main frame should be deferred.
+ WebRestrictionsResourceThrottle throttle2(&provider,
+ GURL("http://example.com"), false);
+ base::RunLoop run_loop3;
+ TestResourceController controller3(run_loop3.QuitClosure());
+ throttle2.set_controller_for_testing(&controller3);
+ throttle2.WillStartRequest(&defer);
+ EXPECT_FALSE(defer);
+}
+
+TEST(WebRestrictionsResourceThrottle, TestWillRedirectRequest) {
+ content::TestBrowserThreadBundle thread_bundle;
+ WebRestrictionsClient provider;
+
+ // Set up a cached url.
+ WebRestrictionsResourceThrottle throttle(&provider,
+ GURL("http://example.com"), true);
+ bool defer;
+ provider.SetAuthority("Good");
+ base::RunLoop run_loop;
+ TestResourceController controller(run_loop.QuitClosure());
+ throttle.set_controller_for_testing(&controller);
+ throttle.WillStartRequest(&defer);
+ run_loop.Run();
+
+ // Using the same URL should not be deferred
+ net::RedirectInfo redirect;
+ redirect.new_url = GURL("http://example.com");
+ throttle.WillRedirectRequest(redirect, &defer);
+ EXPECT_FALSE(defer);
+
+ // Using a different URL should be deferred
+ redirect.new_url = GURL("http://example.com/2");
+ throttle.WillRedirectRequest(redirect, &defer);
+ EXPECT_TRUE(defer);
+}
+
+} // namespace web_restrictions

Powered by Google App Engine
This is Rietveld 408576698