| Index: chrome/browser/safe_browsing/protocol_manager.h
|
| diff --git a/chrome/browser/safe_browsing/protocol_manager.h b/chrome/browser/safe_browsing/protocol_manager.h
|
| index 20ca650f8e6d4a977756f4450240c7db2386172e..7104be4aaf8dbcbe970c67a8ca9cfad5bc4f9227 100644
|
| --- a/chrome/browser/safe_browsing/protocol_manager.h
|
| +++ b/chrome/browser/safe_browsing/protocol_manager.h
|
| @@ -6,6 +6,9 @@
|
| #define CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_
|
|
|
| // A class that implements Chrome's interface with the SafeBrowsing protocol.
|
| +// See https://developers.google.com/safe-browsing/developers_guide_v2 for
|
| +// protocol details.
|
| +//
|
| // The SafeBrowsingProtocolManager handles formatting and making requests of,
|
| // and handling responses from, Google's SafeBrowsing servers. This class uses
|
| // The SafeBrowsingProtocolParser class to do the actual parsing.
|
| @@ -102,9 +105,6 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| void OnGetChunksComplete(const std::vector<SBListChunkRanges>& list,
|
| bool database_error);
|
|
|
| - // Called after the chunks that were parsed were inserted in the database.
|
| - void OnChunkInserted();
|
| -
|
| // The last time we received an update.
|
| base::Time last_update() const { return last_update_; }
|
|
|
| @@ -152,6 +152,9 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| static void RecordGetHashResult(bool is_download,
|
| ResultType result_type);
|
|
|
| + // Returns whether another update is currently scheduled.
|
| + bool IsUpdateScheduled() const;
|
| +
|
| protected:
|
| // Constructs a SafeBrowsingProtocolManager for |delegate| that issues
|
| // network requests using |request_context_getter|.
|
| @@ -232,11 +235,15 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
|
|
| // Helper function for update completion.
|
| void UpdateFinished(bool success);
|
| + void UpdateFinished(bool success, bool back_off);
|
|
|
| // A callback that runs if we timeout waiting for a response to an update
|
| // request. We use this to properly set our update state.
|
| void UpdateResponseTimeout();
|
|
|
| + // Called after the chunks are added to the database.
|
| + void OnAddChunksComplete();
|
| +
|
| private:
|
| // Map of GetHash requests to parameters which created it.
|
| struct FullHashDetails {
|
| @@ -283,6 +290,10 @@ class SafeBrowsingProtocolManager : public net::URLFetcherDelegate,
|
| base::TimeDelta next_update_interval_;
|
| base::OneShotTimer<SafeBrowsingProtocolManager> update_timer_;
|
|
|
| + // timeout_timer_ is used to interrupt update requests which are taking
|
| + // too long.
|
| + base::OneShotTimer<SafeBrowsingProtocolManager> timeout_timer_;
|
| +
|
| // All chunk requests that need to be made.
|
| std::deque<ChunkUrl> chunk_request_urls_;
|
|
|
| @@ -356,6 +367,7 @@ class SafeBrowsingProtocolManagerDelegate {
|
| public:
|
| typedef base::Callback<void(const std::vector<SBListChunkRanges>&, bool)>
|
| GetChunksCallback;
|
| + typedef base::Callback<void(void)> AddChunksCallback;
|
|
|
| virtual ~SafeBrowsingProtocolManagerDelegate();
|
|
|
| @@ -376,8 +388,10 @@ class SafeBrowsingProtocolManagerDelegate {
|
| // may be made to GetChunks at a time.
|
| virtual void GetChunks(GetChunksCallback callback) = 0;
|
|
|
| - // Add new chunks to the database.
|
| - virtual void AddChunks(const std::string& list, SBChunkList* chunks) = 0;
|
| + // Add new chunks to the database. Invokes |callback| when complete, but must
|
| + // call at a later time.
|
| + virtual void AddChunks(const std::string& list, SBChunkList* chunks,
|
| + AddChunksCallback callback) = 0;
|
|
|
| // Delete chunks from the database.
|
| virtual void DeleteChunks(
|
|
|