| Index: chrome/browser/safe_browsing/client_side_model_loader.h
|
| diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/chrome/browser/safe_browsing/client_side_model_loader.h
|
| index 3fc71836494c0354e62f6d82ea9e6363e91b148a..af942bfb938d3b1b97c8611c5508c71e7fd40e25 100644
|
| --- a/chrome/browser/safe_browsing/client_side_model_loader.h
|
| +++ b/chrome/browser/safe_browsing/client_side_model_loader.h
|
| @@ -4,9 +4,6 @@
|
| //
|
| // Helper class loads models for client-side phishing detection
|
| // from the the SafeBrowsing backends.
|
| -//
|
| -// This class is not thread-safe and expects all calls to be made on the UI
|
| -// thread.
|
|
|
| #ifndef CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_MODEL_LOADER_H_
|
| #define CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_MODEL_LOADER_H_
|
| @@ -22,7 +19,7 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/weak_ptr.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +#include "base/sequence_checker.h"
|
| #include "net/url_request/url_fetcher_delegate.h"
|
| #include "url/gurl.h"
|
|
|
| @@ -49,6 +46,9 @@ class ModelLoader : public net::URLFetcherDelegate {
|
| static const char kClientModelUrlPrefix[];
|
| static const char kClientModelNamePattern[];
|
|
|
| + // Constructs a model loader to fetch a model using |request_context_getter|.
|
| + // When ScheduleFetch is called, |update_renderers| will be called on the
|
| + // same sequence if the fetch is successful.
|
| ModelLoader(base::Closure update_renderers,
|
| net::URLRequestContextGetter* request_context_getter,
|
| bool is_extended_reporting);
|
| @@ -60,7 +60,8 @@ class ModelLoader : public net::URLFetcherDelegate {
|
| // Schedules the next fetch of the model.
|
| virtual void ScheduleFetch(int64_t delay_ms);
|
|
|
| - // Cancel any pending model fetch.
|
| + // Cancels any pending model fetch. This must be called from the same
|
| + // sequence as ScheduleFetch.
|
| virtual void CancelFetcher();
|
|
|
| const std::string& model_str() const { return model_str_; }
|
| @@ -122,6 +123,10 @@ class ModelLoader : public net::URLFetcherDelegate {
|
| // Not owned, must outlive this obj or be NULL.
|
| net::URLRequestContextGetter* request_context_getter_;
|
|
|
| + // Used to check that ScheduleFetch and CancelFetcher are called on the same
|
| + // sequence.
|
| + base::SequenceChecker fetch_sequence_checker_;
|
| +
|
| // Used to protect the delayed callback to StartFetchModel()
|
| base::WeakPtrFactory<ModelLoader> weak_factory_;
|
|
|
|
|