Move StartsWith[ASCII] to base namespace.
[chromium-blink-merge.git] / net / proxy / network_delegate_error_observer_unittest.cc
blob2d8301463a0db40939b9daf4920e71adf82e2dd1
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/proxy/network_delegate_error_observer.h"
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h"
11 #include "base/thread_task_runner_handle.h"
12 #include "base/threading/thread.h"
13 #include "net/base/net_errors.h"
14 #include "net/base/network_delegate_impl.h"
15 #include "testing/gtest/include/gtest/gtest.h"
17 namespace net {
19 namespace {
21 class TestNetworkDelegate : public NetworkDelegateImpl {
22 public:
23 TestNetworkDelegate() : got_pac_error_(false) {}
24 ~TestNetworkDelegate() override {}
26 bool got_pac_error() const { return got_pac_error_; }
28 private:
29 // NetworkDelegate implementation.
30 int OnBeforeURLRequest(URLRequest* request,
31 const CompletionCallback& callback,
32 GURL* new_url) override {
33 return OK;
35 int OnBeforeSendHeaders(URLRequest* request,
36 const CompletionCallback& callback,
37 HttpRequestHeaders* headers) override {
38 return OK;
40 void OnSendHeaders(URLRequest* request,
41 const HttpRequestHeaders& headers) override {}
42 int OnHeadersReceived(
43 URLRequest* request,
44 const CompletionCallback& callback,
45 const HttpResponseHeaders* original_response_headers,
46 scoped_refptr<HttpResponseHeaders>* override_response_headers,
47 GURL* allowed_unsafe_redirect_url) override {
48 return OK;
50 void OnBeforeRedirect(URLRequest* request,
51 const GURL& new_location) override {}
52 void OnResponseStarted(URLRequest* request) override {}
53 void OnRawBytesRead(const URLRequest& request, int bytes_read) override {}
54 void OnCompleted(URLRequest* request, bool started) override {}
55 void OnURLRequestDestroyed(URLRequest* request) override {}
57 void OnPACScriptError(int line_number, const base::string16& error) override {
58 got_pac_error_ = true;
60 AuthRequiredResponse OnAuthRequired(URLRequest* request,
61 const AuthChallengeInfo& auth_info,
62 const AuthCallback& callback,
63 AuthCredentials* credentials) override {
64 return AUTH_REQUIRED_RESPONSE_NO_ACTION;
66 bool OnCanGetCookies(const URLRequest& request,
67 const CookieList& cookie_list) override {
68 return true;
70 bool OnCanSetCookie(const URLRequest& request,
71 const std::string& cookie_line,
72 CookieOptions* options) override {
73 return true;
75 bool OnCanAccessFile(const URLRequest& request,
76 const base::FilePath& path) const override {
77 return true;
79 bool OnCanThrottleRequest(const URLRequest& request) const override {
80 return false;
83 bool got_pac_error_;
86 // Check that the OnPACScriptError method can be called from an arbitrary
87 // thread.
88 TEST(NetworkDelegateErrorObserverTest, CallOnThread) {
89 base::Thread thread("test_thread");
90 thread.Start();
91 TestNetworkDelegate network_delegate;
92 NetworkDelegateErrorObserver observer(
93 &network_delegate, base::ThreadTaskRunnerHandle::Get().get());
94 thread.task_runner()->PostTask(
95 FROM_HERE, base::Bind(&NetworkDelegateErrorObserver::OnPACScriptError,
96 base::Unretained(&observer), 42, base::string16()));
97 thread.Stop();
98 base::MessageLoop::current()->RunUntilIdle();
99 ASSERT_TRUE(network_delegate.got_pac_error());
102 // Check that passing a NULL network delegate works.
103 TEST(NetworkDelegateErrorObserverTest, NoDelegate) {
104 base::Thread thread("test_thread");
105 thread.Start();
106 NetworkDelegateErrorObserver observer(
107 NULL, base::ThreadTaskRunnerHandle::Get().get());
108 thread.task_runner()->PostTask(
109 FROM_HERE, base::Bind(&NetworkDelegateErrorObserver::OnPACScriptError,
110 base::Unretained(&observer), 42, base::string16()));
111 thread.Stop();
112 base::MessageLoop::current()->RunUntilIdle();
113 // Shouldn't have crashed until here...
116 } // namespace
118 } // namespace net