1// Copyright 2013 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#ifndef CHROME_BROWSER_EXTENSIONS_FAKE_SAFE_BROWSING_DATABASE_MANAGER_H_ 6#define CHROME_BROWSER_EXTENSIONS_FAKE_SAFE_BROWSING_DATABASE_MANAGER_H_ 7 8#include <set> 9#include <string> 10 11#include "chrome/browser/safe_browsing/database_manager.h" 12 13namespace extensions { 14 15// A fake safe browsing database manager for use with extensions tests. 16// 17// By default it is disabled (returning true and ignoring |unsafe_ids_|); 18// call set_enabled to enable it. 19class FakeSafeBrowsingDatabaseManager : public SafeBrowsingDatabaseManager { 20 public: 21 explicit FakeSafeBrowsingDatabaseManager(bool enabled); 22 23 // Returns true if synchronously safe, false if not in which case the unsafe 24 // IDs taken from |unsafe_ids_| are passed to to |client| on the current 25 // message loop. 26 virtual bool CheckExtensionIDs(const std::set<std::string>& extension_ids, 27 Client* client) OVERRIDE; 28 29 // Return |this| to chain together SetUnsafe(...).NotifyUpdate() conveniently. 30 FakeSafeBrowsingDatabaseManager& Enable(); 31 FakeSafeBrowsingDatabaseManager& Disable(); 32 FakeSafeBrowsingDatabaseManager& ClearUnsafe(); 33 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a); 34 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a, 35 const std::string& b); 36 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a, 37 const std::string& b, 38 const std::string& c); 39 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a, 40 const std::string& b, 41 const std::string& c, 42 const std::string& d); 43 FakeSafeBrowsingDatabaseManager& AddUnsafe(const std::string& a); 44 FakeSafeBrowsingDatabaseManager& RemoveUnsafe(const std::string& a); 45 46 // Send the update notification. 47 void NotifyUpdate(); 48 49 private: 50 virtual ~FakeSafeBrowsingDatabaseManager(); 51 52 // Runs client->SafeBrowsingResult(result). 53 void OnSafeBrowsingResult(scoped_ptr<SafeBrowsingCheck> result, 54 Client* client); 55 56 // Whether to respond to CheckExtensionIDs immediately with true (indicating 57 // that there is definitely no extension ID match). 58 bool enabled_; 59 60 // The extension IDs considered unsafe. 61 std::set<std::string> unsafe_ids_; 62}; 63 64} // namespace extensions 65 66#endif // CHROME_BROWSER_EXTENSIONS_FAKE_SAFE_BROWSING_DATABASE_MANAGER_H_ 67