Home | History | Annotate | Download | only in proxy
      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.
      4 
      5 #include "net/proxy/mock_proxy_script_fetcher.h"
      6 
      7 #include "base/logging.h"
      8 #include "base/message_loop/message_loop.h"
      9 #include "base/strings/string16.h"
     10 #include "base/strings/utf_string_conversions.h"
     11 #include "net/base/net_errors.h"
     12 
     13 namespace net {
     14 
     15 MockProxyScriptFetcher::MockProxyScriptFetcher()
     16     : pending_request_text_(NULL),
     17       waiting_for_fetch_(false) {
     18 }
     19 
     20 MockProxyScriptFetcher::~MockProxyScriptFetcher() {}
     21 
     22 // ProxyScriptFetcher implementation.
     23 int MockProxyScriptFetcher::Fetch(const GURL& url, base::string16* text,
     24                                   const CompletionCallback& callback) {
     25   DCHECK(!has_pending_request());
     26 
     27   // Save the caller's information, and have them wait.
     28   pending_request_url_ = url;
     29   pending_request_callback_ = callback;
     30   pending_request_text_ = text;
     31 
     32   if (waiting_for_fetch_)
     33     base::MessageLoop::current()->Quit();
     34 
     35   return ERR_IO_PENDING;
     36 }
     37 
     38 void MockProxyScriptFetcher::NotifyFetchCompletion(
     39     int result, const std::string& ascii_text) {
     40   DCHECK(has_pending_request());
     41   *pending_request_text_ = base::ASCIIToUTF16(ascii_text);
     42   CompletionCallback callback = pending_request_callback_;
     43   pending_request_callback_.Reset();
     44   callback.Run(result);
     45 }
     46 
     47 void MockProxyScriptFetcher::Cancel() {
     48 }
     49 
     50 URLRequestContext* MockProxyScriptFetcher::GetRequestContext() const {
     51   return NULL;
     52 }
     53 
     54 const GURL& MockProxyScriptFetcher::pending_request_url() const {
     55   return pending_request_url_;
     56 }
     57 
     58 bool MockProxyScriptFetcher::has_pending_request() const {
     59   return !pending_request_callback_.is_null();
     60 }
     61 
     62 void MockProxyScriptFetcher::WaitUntilFetch() {
     63   DCHECK(!has_pending_request());
     64   waiting_for_fetch_ = true;
     65   base::MessageLoop::current()->Run();
     66   waiting_for_fetch_ = false;
     67 }
     68 
     69 }  // namespace net
     70