summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/tools
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-14 03:31:54 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-14 03:31:54 +0000
commitbb2ef44d4178a0ed3175d0ee222196f458f0354f (patch)
tree91615b498d7632ec3b55c0ef66100b0a8115276c /chrome/browser/sync/tools
parent4db064760f1b2a9f996e6a9711c95d29f4a32f01 (diff)
downloadchromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.zip
chromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.tar.gz
chromium_src-bb2ef44d4178a0ed3175d0ee222196f458f0354f.tar.bz2
[Sync] Made notifications code read/write persistent state.
BUG=58556 TEST=Manual Review URL: http://codereview.chromium.org/3772001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync/tools')
-rw-r--r--chrome/browser/sync/tools/sync_listen_notifications.cc28
1 files changed, 22 insertions, 6 deletions
diff --git a/chrome/browser/sync/tools/sync_listen_notifications.cc b/chrome/browser/sync/tools/sync_listen_notifications.cc
index 5c86fa4..c619e14 100644
--- a/chrome/browser/sync/tools/sync_listen_notifications.cc
+++ b/chrome/browser/sync/tools/sync_listen_notifications.cc
@@ -161,7 +161,9 @@ class CacheInvalidationNotifierDelegate
: public XmppNotificationClient::Observer,
public sync_notifier::StateWriter {
public:
- CacheInvalidationNotifierDelegate() {}
+ explicit CacheInvalidationNotifierDelegate(
+ const std::string& cache_invalidation_state)
+ : cache_invalidation_state_(cache_invalidation_state) {}
virtual ~CacheInvalidationNotifierDelegate() {}
@@ -170,8 +172,7 @@ class CacheInvalidationNotifierDelegate
// TODO(akalin): app_name should be per-client unique.
const std::string kAppName = "cc_sync_listen_notifications";
- std::string state = "";
- chrome_invalidation_client_.Start(kAppName, state,
+ chrome_invalidation_client_.Start(kAppName, cache_invalidation_state_,
&chrome_invalidation_listener_,
this, base_task);
chrome_invalidation_client_.RegisterTypes();
@@ -184,11 +185,15 @@ class CacheInvalidationNotifierDelegate
virtual void WriteState(const std::string& state) {
std::string base64_state;
CHECK(base::Base64Encode(state, &base64_state));
- LOG(INFO) << "Writing state: " << base64_state;
+ LOG(INFO) << "New state: " << base64_state;
}
private:
ChromeInvalidationListener chrome_invalidation_listener_;
+ // Opaque blob capturing the notifications state of a previous run
+ // (i.e., the base64-decoded value of a string output by
+ // WriteState()).
+ std::string cache_invalidation_state_;
sync_notifier::ChromeInvalidationClient chrome_invalidation_client_;
};
@@ -210,7 +215,8 @@ int main(int argc, char* argv[]) {
if (email.empty()) {
printf("Usage: %s --email=foo@bar.com [--password=mypassword] "
"[--server=talk.google.com] [--port=5222] [--allow-plain] "
- "[--disable-tls] [--use-cache-invalidation] [--use-ssl-tcp]\n",
+ "[--disable-tls] [--use-cache-invalidation] [--use-ssl-tcp] "
+ "[--cache-invalidtion-state]\n",
argv[0]);
return -1;
}
@@ -239,6 +245,15 @@ int main(int argc, char* argv[]) {
LOG(WARNING) << switches::kSyncUseSslTcp << " is set but port is " << port
<< " instead of 443";
}
+ std::string cache_invalidation_state;
+ std::string cache_invalidation_state_encoded =
+ command_line.GetSwitchValueASCII("cache-invalidation-state");
+ if (!cache_invalidation_state_encoded.empty() &&
+ !base::Base64Decode(cache_invalidation_state_encoded,
+ &cache_invalidation_state)) {
+ LOG(ERROR) << "Could not decode state: "
+ << cache_invalidation_state_encoded;
+ }
// Build XMPP client settings.
buzz::XmppClientSettings xmpp_client_settings;
@@ -266,7 +281,8 @@ int main(int argc, char* argv[]) {
// Connect and listen.
LegacyNotifierDelegate legacy_notifier_delegate;
- CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate;
+ CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate(
+ cache_invalidation_state);
std::vector<XmppNotificationClient::Observer*> observers;
// TODO(akalin): Add switch to listen to both.
if (command_line.HasSwitch(switches::kSyncUseCacheInvalidation)) {