diff --git a/chrome/browser/extensions/extension_gcm_app_handler.cc b/chrome/browser/extensions/extension_gcm_app_handler.cc
index 6a9f275..c07bd54 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler.cc
@@ -136,11 +136,17 @@
     const Extension* extension,
     extensions::UninstallReason reason) {
   if (IsGCMPermissionEnabled(extension)) {
-    GetGCMDriver()->Unregister(
+    // Let's first remove InstanceID data. GCM unregistration will be triggered
+    // after the asynchronous call is returned in OnDeleteTokensCompleted.
+    gcm::InstanceIDHandler* instance_id_handler =
+        GetGCMDriver()->GetInstanceIDHandler();
+    DCHECK(instance_id_handler);
+    instance_id_handler->DeleteAllTokensForApp(
         extension->id(),
-        base::Bind(&ExtensionGCMAppHandler::OnUnregisterCompleted,
+        base::Bind(&ExtensionGCMAppHandler::OnDeleteTokensCompleted,
                    weak_factory_.GetWeakPtr(),
                    extension->id()));
+    instance_id_handler->RemoveInstanceIDData(extension->id());
   }
 }
 
@@ -161,6 +167,15 @@
   RemoveAppHandler(app_id);
 }
 
+void ExtensionGCMAppHandler::OnDeleteTokensCompleted(
+    const std::string& app_id, gcm::GCMClient::Result result) {
+  GetGCMDriver()->Unregister(
+      app_id,
+      base::Bind(&ExtensionGCMAppHandler::OnUnregisterCompleted,
+                 weak_factory_.GetWeakPtr(),
+                  app_id));
+}
+
 void ExtensionGCMAppHandler::AddAppHandler(const std::string& app_id) {
   GetGCMDriver()->AddAppHandler(app_id, this);
 }
diff --git a/chrome/browser/extensions/extension_gcm_app_handler.h b/chrome/browser/extensions/extension_gcm_app_handler.h
index 3e2c00f..3f361ba 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler.h
+++ b/chrome/browser/extensions/extension_gcm_app_handler.h
@@ -60,12 +60,14 @@
   // Could be overridden by testing purpose.
   virtual void OnUnregisterCompleted(const std::string& app_id,
                                      gcm::GCMClient::Result result);
+  virtual void OnDeleteTokensCompleted(const std::string& app_id,
+                                       gcm::GCMClient::Result result);
   virtual void AddAppHandler(const std::string& app_id);
   virtual void RemoveAppHandler(const std::string& app_id);
 
   gcm::GCMDriver* GetGCMDriver() const;
 
-private:
+ private:
   friend class BrowserContextKeyedAPIFactory<ExtensionGCMAppHandler>;
 
   // ExtensionRegistryObserver implementation.
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
index 5355ee0..4669ea3 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -132,6 +132,7 @@
       : ExtensionGCMAppHandler(profile),
         waiter_(waiter),
         unregistration_result_(gcm::GCMClient::UNKNOWN_ERROR),
+        delete_tokens_result_(gcm::GCMClient::UNKNOWN_ERROR),
         app_handler_count_drop_to_zero_(false) {
   }
 
@@ -153,6 +154,12 @@
     waiter_->SignalCompleted();
   }
 
+  void OnDeleteTokensCompleted(const std::string& app_id,
+                               gcm::GCMClient::Result result) override {
+    delete_tokens_result_ = result;
+    ExtensionGCMAppHandler::OnDeleteTokensCompleted(app_id, result);
+  }
+
   void RemoveAppHandler(const std::string& app_id) override {
     ExtensionGCMAppHandler::RemoveAppHandler(app_id);
     if (!GetGCMDriver()->app_handlers().size())
@@ -162,6 +169,9 @@
   gcm::GCMClient::Result unregistration_result() const {
     return unregistration_result_;
   }
+  gcm::GCMClient::Result delete_tokens_result() const {
+    return delete_tokens_result_;
+  }
   bool app_handler_count_drop_to_zero() const {
     return app_handler_count_drop_to_zero_;
   }
@@ -169,6 +179,7 @@
  private:
   Waiter* waiter_;
   gcm::GCMClient::Result unregistration_result_;
+  gcm::GCMClient::Result delete_tokens_result_;
   bool app_handler_count_drop_to_zero_;
 
   DISALLOW_COPY_AND_ASSIGN(FakeExtensionGCMAppHandler);
@@ -418,9 +429,11 @@
   waiter()->WaitUntilCompleted();
   EXPECT_EQ(gcm::GCMClient::SUCCESS, registration_result());
 
-  // Unregistration should be triggered when the extension is uninstalled.
+  // Both token deletion and unregistration should be triggered when the
+  // extension is uninstalled.
   UninstallExtension(extension.get());
   waiter()->WaitUntilCompleted();
+  EXPECT_EQ(gcm::GCMClient::SUCCESS, gcm_app_handler()->delete_tokens_result());
   EXPECT_EQ(gcm::GCMClient::SUCCESS,
             gcm_app_handler()->unregistration_result());
 }
