15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/extensions/test_blacklist_state_fetcher.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/message_loop/message_loop.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/stl_util.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "net/url_request/url_request_test_util.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace extensions { 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kUrlPrefix[] = "https://prefix.com/foo"; 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kBackupConnectUrlPrefix[] = "https://alt1-prefix.com/foo"; 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kBackupHttpUrlPrefix[] = "https://alt2-prefix.com/foo"; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kBackupNetworkUrlPrefix[] = "https://alt3-prefix.com/foo"; 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kClient[] = "unittest"; 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)static const char kAppVer[] = "1.0"; 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)SafeBrowsingProtocolConfig CreateSafeBrowsingProtocolConfig() { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SafeBrowsingProtocolConfig config; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.client_name = kClient; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.url_prefix = kUrlPrefix; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.backup_connect_error_url_prefix = kBackupConnectUrlPrefix; 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.backup_http_error_url_prefix = kBackupHttpUrlPrefix; 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.backup_network_error_url_prefix = kBackupNetworkUrlPrefix; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) config.version = kAppVer; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return config; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TestBlacklistStateFetcher::TestBlacklistStateFetcher( 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) BlacklistStateFetcher* fetcher) : fetcher_(fetcher) { 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) fetcher_->SetSafeBrowsingConfig(CreateSafeBrowsingProtocolConfig()); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<net::TestURLRequestContextGetter> context = 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) new net::TestURLRequestContextGetter( 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::MessageLoopProxy::current()); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher_->SetURLRequestContextForTest(context.get()); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TestBlacklistStateFetcher::~TestBlacklistStateFetcher() { 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void TestBlacklistStateFetcher::SetBlacklistVerdict( 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& id, ClientCRXListInfoResponse_Verdict state) { 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) verdicts_[id] = state; 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool TestBlacklistStateFetcher::HandleFetcher(int fetcher_id) { 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID( 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) fetcher_id); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!url_fetcher) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& request_str = url_fetcher->upload_data(); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ClientCRXListInfoRequest request; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!request.ParseFromString(request_str)) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string id = request.id(); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ClientCRXListInfoResponse response; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (ContainsKey(verdicts_, id)) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) response.set_verdict(verdicts_[id]); 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) response.set_verdict(ClientCRXListInfoResponse::NOT_IN_BLACKLIST); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string response_str; 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) response.SerializeToString(&response_str); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) url_fetcher->set_status(net::URLRequestStatus()); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) url_fetcher->set_response_code(200); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) url_fetcher->SetResponseString(response_str); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace extensions 82