diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 08:46:17 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 08:46:17 +0000 |
commit | 2d4520df398ba99b326a10dfb82c4088875f2ecb (patch) | |
tree | 3bf5e28edb6fe8d07922f6e8574f8aa320de108b | |
parent | b060f28203a830ab43301e99680db08cb44c1a1f (diff) | |
download | chromium_src-2d4520df398ba99b326a10dfb82c4088875f2ecb.zip chromium_src-2d4520df398ba99b326a10dfb82c4088875f2ecb.tar.gz chromium_src-2d4520df398ba99b326a10dfb82c4088875f2ecb.tar.bz2 |
Merge 57301 - Fixed CacheInvalidationPacketHandler crash.
Made CacheInvalidationPacketHandler use a ScopedCallbackFactory.
BUG=53201
TEST=manually with sync_listen_notifications
Review URL: http://codereview.chromium.org/3191024
TBR=akalin@chromium.org
Review URL: http://codereview.chromium.org/3180023
git-svn-id: svn://svn.chromium.org/chrome/branches/472/src@57303 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc | 11 | ||||
-rw-r--r-- | chrome/browser/sync/notifier/cache_invalidation_packet_handler.h | 4 |
2 files changed, 10 insertions, 5 deletions
diff --git a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc index a5d23f2..9241439 100644 --- a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc +++ b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc @@ -8,6 +8,7 @@ #include "base/base64.h" #include "base/callback.h" +#include "base/compiler_specific.h" #include "base/logging.h" #include "base/rand_util.h" #include "base/string_util.h" @@ -196,7 +197,8 @@ std::string MakeSid() { CacheInvalidationPacketHandler::CacheInvalidationPacketHandler( buzz::XmppClient* xmpp_client, invalidation::InvalidationClient* invalidation_client) - : xmpp_client_(xmpp_client), + : scoped_callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), + xmpp_client_(xmpp_client), invalidation_client_(invalidation_client), seq_(0), sid_(MakeSid()) { @@ -206,14 +208,13 @@ CacheInvalidationPacketHandler::CacheInvalidationPacketHandler( invalidation_client_->network_endpoint(); CHECK(network_endpoint); network_endpoint->RegisterOutboundListener( - invalidation::NewPermanentCallback( - this, + scoped_callback_factory_.NewCallback( &CacheInvalidationPacketHandler::HandleOutboundPacket)); // Owned by xmpp_client. CacheInvalidationListenTask* listen_task = new CacheInvalidationListenTask( - xmpp_client, NewCallback( - this, &CacheInvalidationPacketHandler::HandleInboundPacket)); + xmpp_client, scoped_callback_factory_.NewCallback( + &CacheInvalidationPacketHandler::HandleInboundPacket)); listen_task->Start(); } diff --git a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.h b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.h index 0f5feaa..5a15b97 100644 --- a/chrome/browser/sync/notifier/cache_invalidation_packet_handler.h +++ b/chrome/browser/sync/notifier/cache_invalidation_packet_handler.h @@ -11,6 +11,7 @@ #include <string> #include "base/basictypes.h" +#include "base/scoped_callback_factory.h" #include "talk/xmpp/jid.h" namespace buzz { @@ -47,6 +48,9 @@ class CacheInvalidationPacketHandler { void HandleInboundPacket(const std::string& packet); + base::ScopedCallbackFactory<CacheInvalidationPacketHandler> + scoped_callback_factory_; + buzz::XmppClient* xmpp_client_; invalidation::InvalidationClient* invalidation_client_; |