Home | History | Annotate | Download | only in extensions
      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& 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