Index: chrome/browser/webdata/web_data_service.h |
diff --git a/chrome/browser/webdata/web_data_service.h b/chrome/browser/webdata/web_data_service.h |
index b0a0689f4ffbb5dd23f148fe2d72a97bd0352697..1941795971b014aa11d6110b382ecdb13197e060 100644 |
--- a/chrome/browser/webdata/web_data_service.h |
+++ b/chrome/browser/webdata/web_data_service.h |
@@ -27,6 +27,7 @@ |
#include "chrome/browser/search_engines/template_url.h" |
#include "chrome/browser/search_engines/template_url_id.h" |
#include "chrome/browser/webdata/keyword_table.h" |
+#include "chrome/browser/webdata/web_data_request_manager.h" |
#include "content/public/browser/browser_thread.h" |
#include "sql/init_status.h" |
@@ -100,106 +101,6 @@ class WebDataService |
public AutofillWebData, |
public RefcountedProfileKeyedService { |
public: |
- ////////////////////////////////////////////////////////////////////////////// |
- // |
- // Internal requests |
- // |
- // Every request is processed using a request object. The object contains |
- // both the request parameters and the results. |
- ////////////////////////////////////////////////////////////////////////////// |
- class WebDataRequest { |
- public: |
- WebDataRequest(WebDataService* service, |
- Handle handle, |
- WebDataServiceConsumer* consumer); |
- |
- virtual ~WebDataRequest(); |
- |
- Handle GetHandle() const; |
- |
- // Retrieves the |consumer_| set in the constructor. If the request was |
- // cancelled via the |Cancel()| method then |true| is returned and |
- // |*consumer| is set to NULL. The |consumer| parameter may be set to NULL |
- // if only the return value is desired. |
- bool IsCancelled(WebDataServiceConsumer** consumer) const; |
- |
- // This can be invoked from any thread. From this point we assume that |
- // our consumer_ reference is invalid. |
- void Cancel(); |
- |
- // Invoked by the service when this request has been completed. |
- // This will notify the service in whatever thread was used to create this |
- // request. |
- void RequestComplete(); |
- |
- // The result is owned by the request. |
- void SetResult(WDTypedResult* r); |
- const WDTypedResult* GetResult() const; |
- |
- private: |
- scoped_refptr<WebDataService> service_; |
- MessageLoop* message_loop_; |
- Handle handle_; |
- |
- // A lock to protect against simultaneous cancellations of the request. |
- // Cancellation affects both the |cancelled_| flag and |consumer_|. |
- mutable base::Lock cancel_lock_; |
- bool cancelled_; |
- WebDataServiceConsumer* consumer_; |
- |
- WDTypedResult* result_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WebDataRequest); |
- }; |
- |
- // |
- // Internally we use instances of the following template to represent |
- // requests. |
- // |
- template <class T> |
- class GenericRequest : public WebDataRequest { |
- public: |
- GenericRequest(WebDataService* service, |
- Handle handle, |
- WebDataServiceConsumer* consumer, |
- const T& arg) |
- : WebDataRequest(service, handle, consumer), |
- arg_(arg) { |
- } |
- |
- virtual ~GenericRequest() { |
- } |
- |
- const T& arg() const { return arg_; } |
- |
- private: |
- T arg_; |
- }; |
- |
- template <class T, class U> |
- class GenericRequest2 : public WebDataRequest { |
- public: |
- GenericRequest2(WebDataService* service, |
- Handle handle, |
- WebDataServiceConsumer* consumer, |
- const T& arg1, |
- const U& arg2) |
- : WebDataRequest(service, handle, consumer), |
- arg1_(arg1), |
- arg2_(arg2) { |
- } |
- |
- virtual ~GenericRequest2() { } |
- |
- const T& arg1() const { return arg1_; } |
- |
- const U& arg2() const { return arg2_; } |
- |
- private: |
- T arg1_; |
- U arg2_; |
- }; |
- |
WebDataService(); |
// WebDataServiceBase implementation. |
@@ -408,6 +309,8 @@ class WebDataService |
virtual AutocompleteSyncableService* |
GetAutocompleteSyncableService() const; |
+ virtual void DestroyAutofillProfileResult(const WDTypedResult* result); |
dhollowa
2013/01/04 23:57:36
Can these be private?
Cait (Slow)
2013/01/07 17:08:54
Done.
|
+ virtual void DestroyAutofillCreditCardResult(const WDTypedResult* result); |
// Testing |
#ifdef UNIT_TEST |
void set_failed_init(bool value) { failed_init_ = value; } |
@@ -427,9 +330,6 @@ class WebDataService |
// Invoked by request implementations when a request has been processed. |
void RequestCompleted(Handle h); |
- // Register the request as a pending request. |
- void RegisterRequest(WebDataRequest* request); |
- |
////////////////////////////////////////////////////////////////////////////// |
// |
// The following methods are only invoked in the web data service thread. |
@@ -471,9 +371,6 @@ class WebDataService |
// Schedule a commit if one is not already pending. |
void ScheduleCommit(); |
- // Return the next request handle. |
- int GetNextRequestHandle(); |
- |
////////////////////////////////////////////////////////////////////////////// |
// |
// Keywords. |
@@ -575,6 +472,9 @@ class WebDataService |
// |db_| lifetime must be managed on the database thread. |
WebDatabase* db_; |
+ // Keeps track of all pending requests made to the db. |
+ scoped_ptr<WebDataRequestManager> request_manager_; |
+ |
// Syncable services for the database data. We own the services, but don't |
// use |scoped_ptr|s because the lifetimes must be managed on the database |
// thread. |
@@ -590,15 +490,6 @@ class WebDataService |
// Whether we should commit the database. |
bool should_commit_; |
- // A lock to protect pending requests and next request handle. |
- base::Lock pending_lock_; |
- |
- // Next handle to be used for requests. Incremented for each use. |
- Handle next_request_handle_; |
- |
- typedef std::map<Handle, WebDataRequest*> RequestMap; |
- RequestMap pending_requests_; |
- |
// MessageLoop the WebDataService is created on. |
MessageLoop* main_loop_; |