summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/notifier/chrome_invalidation_client.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-11 17:27:46 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-11 17:27:46 +0000
commit618a4ac762817cdd51bf0d30b36cfeffd41b0507 (patch)
tree676279d48256acd515e9f5deba0d9ae6479cf9da /chrome/browser/sync/notifier/chrome_invalidation_client.cc
parenta446a53c3d50b49e23bcd93814de95b2ed981aa9 (diff)
downloadchromium_src-618a4ac762817cdd51bf0d30b36cfeffd41b0507.zip
chromium_src-618a4ac762817cdd51bf0d30b36cfeffd41b0507.tar.gz
chromium_src-618a4ac762817cdd51bf0d30b36cfeffd41b0507.tar.bz2
[Sync] Added some plumbing needed for notifications persistence support
BUG=58556 TEST=ChromeSystemResources unit tests Review URL: http://codereview.chromium.org/3610015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62155 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync/notifier/chrome_invalidation_client.cc')
-rw-r--r--chrome/browser/sync/notifier/chrome_invalidation_client.cc22
1 files changed, 17 insertions, 5 deletions
diff --git a/chrome/browser/sync/notifier/chrome_invalidation_client.cc b/chrome/browser/sync/notifier/chrome_invalidation_client.cc
index c2505c2..606eb4f 100644
--- a/chrome/browser/sync/notifier/chrome_invalidation_client.cc
+++ b/chrome/browser/sync/notifier/chrome_invalidation_client.cc
@@ -7,6 +7,7 @@
#include <string>
#include <vector>
+#include "base/compiler_specific.h"
#include "base/logging.h"
#include "chrome/browser/sync/notifier/cache_invalidation_packet_handler.h"
#include "chrome/browser/sync/notifier/invalidation_util.h"
@@ -19,7 +20,9 @@ namespace sync_notifier {
ChromeInvalidationClient::Listener::~Listener() {}
ChromeInvalidationClient::ChromeInvalidationClient()
- : listener_(NULL) {
+ : chrome_system_resources_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
+ listener_(NULL),
+ state_writer_(NULL) {
DCHECK(non_thread_safe_.CalledOnValidThread());
}
@@ -27,10 +30,12 @@ ChromeInvalidationClient::~ChromeInvalidationClient() {
DCHECK(non_thread_safe_.CalledOnValidThread());
Stop();
DCHECK(!listener_);
+ DCHECK(!state_writer_);
}
void ChromeInvalidationClient::Start(
- const std::string& client_id, Listener* listener,
+ const std::string& client_id, const std::string& state,
+ Listener* listener, StateWriter* state_writer,
base::WeakPtr<talk_base::Task> base_task) {
DCHECK(non_thread_safe_.CalledOnValidThread());
DCHECK(base_task.get());
@@ -39,7 +44,11 @@ void ChromeInvalidationClient::Start(
chrome_system_resources_.StartScheduler();
DCHECK(!listener_);
+ DCHECK(listener);
listener_ = listener;
+ DCHECK(!state_writer_);
+ DCHECK(state_writer);
+ state_writer_ = state_writer;
invalidation::ClientType client_type;
client_type.set_type(invalidation::ClientType::CHROME_SYNC);
@@ -50,12 +59,10 @@ void ChromeInvalidationClient::Start(
// replies we get.
client_config.max_registrations_per_message = 20;
client_config.max_ops_per_message = 40;
- // TODO(akalin): Grab |persisted_state| from persistent storage.
- std::string persisted_state;
invalidation_client_.reset(
new invalidation::InvalidationClientImpl(
&chrome_system_resources_, client_type, client_id,
- persisted_state, client_config, this));
+ state, client_config, this));
cache_invalidation_packet_handler_.reset(
new CacheInvalidationPacketHandler(base_task,
invalidation_client_.get()));
@@ -76,6 +83,7 @@ void ChromeInvalidationClient::Stop() {
registration_manager_.reset();
cache_invalidation_packet_handler_.reset();
invalidation_client_.reset();
+ state_writer_ = NULL;
listener_ = NULL;
}
@@ -144,4 +152,8 @@ void ChromeInvalidationClient::RegistrationLost(
RunAndDeleteClosure(callback);
}
+void ChromeInvalidationClient::WriteState(const std::string& state) {
+ state_writer_->WriteState(state);
+}
+
} // namespace sync_notifier