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 13 namespace 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. 19 class 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& ClearUnsafe(); 32 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a); 33 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a, 34 const std::string& b); 35 FakeSafeBrowsingDatabaseManager& SetUnsafe(const std::string& a, 36 const std::string& b, 37 const std::string& c); 38 39 // Send the update notification. 40 void NotifyUpdate(); 41 42 private: 43 virtual ~FakeSafeBrowsingDatabaseManager(); 44 45 // Runs client->SafeBrowsingResult(result). 46 void OnSafeBrowsingResult(scoped_ptr<SafeBrowsingCheck> result, 47 Client* client); 48 49 // Whether to respond to CheckExtensionIDs immediately with true (indicating 50 // that there is definitely no extension ID match). 51 bool enabled_; 52 53 // The extension IDs considered unsafe. 54 std::set<std::string> unsafe_ids_; 55 }; 56 57 } // namespace extensions 58 59 #endif // CHROME_BROWSER_EXTENSIONS_FAKE_SAFE_BROWSING_DATABASE_MANAGER_H_ 60