summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 08:46:17 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 08:46:17 +0000
commit2d4520df398ba99b326a10dfb82c4088875f2ecb (patch)
tree3bf5e28edb6fe8d07922f6e8574f8aa320de108b
parentb060f28203a830ab43301e99680db08cb44c1a1f (diff)
downloadchromium_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.cc11
-rw-r--r--chrome/browser/sync/notifier/cache_invalidation_packet_handler.h4
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_;