| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "chrome/browser/sync/glue/sync_backend_registrar.h" |    5 #include "chrome/browser/sync/glue/sync_backend_registrar.h" | 
|    6  |    6  | 
 |    7 #include "base/location.h" | 
|    7 #include "base/run_loop.h" |    8 #include "base/run_loop.h" | 
 |    9 #include "base/single_thread_task_runner.h" | 
|    8 #include "chrome/browser/sync/glue/ui_model_worker.h" |   10 #include "chrome/browser/sync/glue/ui_model_worker.h" | 
|    9 #include "chrome/test/base/testing_profile.h" |   11 #include "chrome/test/base/testing_profile.h" | 
|   10 #include "components/sync_driver/change_processor_mock.h" |   12 #include "components/sync_driver/change_processor_mock.h" | 
|   11 #include "content/public/browser/browser_thread.h" |   13 #include "content/public/browser/browser_thread.h" | 
|   12 #include "content/public/test/test_browser_thread_bundle.h" |   14 #include "content/public/test/test_browser_thread_bundle.h" | 
|   13 #include "sync/internal_api/public/base/model_type.h" |   15 #include "sync/internal_api/public/base/model_type.h" | 
|   14 #include "sync/internal_api/public/test/test_user_share.h" |   16 #include "sync/internal_api/public/test/test_user_share.h" | 
|   15 #include "testing/gmock/include/gmock/gmock.h" |   17 #include "testing/gmock/include/gmock/gmock.h" | 
|   16 #include "testing/gtest/include/gtest/gtest.h" |   18 #include "testing/gtest/include/gtest/gtest.h" | 
|   17  |   19  | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   70   void SetUp() override { |   72   void SetUp() override { | 
|   71     test_user_share_.SetUp(); |   73     test_user_share_.SetUp(); | 
|   72     registrar_.reset(new SyncBackendRegistrar("test", &profile_, |   74     registrar_.reset(new SyncBackendRegistrar("test", &profile_, | 
|   73                                               scoped_ptr<base::Thread>())); |   75                                               scoped_ptr<base::Thread>())); | 
|   74     sync_thread_ = registrar_->sync_thread(); |   76     sync_thread_ = registrar_->sync_thread(); | 
|   75   } |   77   } | 
|   76  |   78  | 
|   77   void TearDown() override { |   79   void TearDown() override { | 
|   78     registrar_->RequestWorkerStopOnUIThread(); |   80     registrar_->RequestWorkerStopOnUIThread(); | 
|   79     test_user_share_.TearDown(); |   81     test_user_share_.TearDown(); | 
|   80     sync_thread_->message_loop()->PostTask( |   82     sync_thread_->task_runner()->PostTask( | 
|   81         FROM_HERE, |   83         FROM_HERE, base::Bind(&SyncBackendRegistrar::Shutdown, | 
|   82         base::Bind(&SyncBackendRegistrar::Shutdown, |   84                               base::Unretained(registrar_.release()))); | 
|   83                    base::Unretained(registrar_.release()))); |  | 
|   84     sync_thread_->message_loop()->RunUntilIdle(); |   85     sync_thread_->message_loop()->RunUntilIdle(); | 
|   85   } |   86   } | 
|   86  |   87  | 
|   87   void ExpectRoutingInfo( |   88   void ExpectRoutingInfo( | 
|   88       SyncBackendRegistrar* registrar, |   89       SyncBackendRegistrar* registrar, | 
|   89       const syncer::ModelSafeRoutingInfo& expected_routing_info) { |   90       const syncer::ModelSafeRoutingInfo& expected_routing_info) { | 
|   90     syncer::ModelSafeRoutingInfo routing_info; |   91     syncer::ModelSafeRoutingInfo routing_info; | 
|   91     registrar->GetModelSafeRoutingInfo(&routing_info); |   92     registrar->GetModelSafeRoutingInfo(&routing_info); | 
|   92     EXPECT_EQ(expected_routing_info, routing_info); |   93     EXPECT_EQ(expected_routing_info, routing_info); | 
|   93   } |   94   } | 
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  324   // initialize the worker on the DB thread hasn't had a chance to run yet too. |  325   // initialize the worker on the DB thread hasn't had a chance to run yet too. | 
|  325   // Which means ModelSafeWorker::SetWorkingLoopToCurrent hasn't been called |  326   // Which means ModelSafeWorker::SetWorkingLoopToCurrent hasn't been called | 
|  326   // for the DB worker. |  327   // for the DB worker. | 
|  327   db_thread_blocked_.Wait(); |  328   db_thread_blocked_.Wait(); | 
|  328  |  329  | 
|  329   registrar->SetInitialTypes(ModelTypeSet()); |  330   registrar->SetInitialTypes(ModelTypeSet()); | 
|  330  |  331  | 
|  331   // Start the shutdown. |  332   // Start the shutdown. | 
|  332   registrar->RequestWorkerStopOnUIThread(); |  333   registrar->RequestWorkerStopOnUIThread(); | 
|  333  |  334  | 
|  334   sync_thread->message_loop()->PostTask( |  335   sync_thread->task_runner()->PostTask( | 
|  335       FROM_HERE, |  336       FROM_HERE, base::Bind(&SyncBackendRegistrar::Shutdown, | 
|  336       base::Bind(&SyncBackendRegistrar::Shutdown, |  337                             base::Unretained(registrar.release()))); | 
|  337                  base::Unretained(registrar.release()))); |  | 
|  338  |  338  | 
|  339   // Make sure the thread starts running. |  339   // Make sure the thread starts running. | 
|  340   sync_thread->WaitUntilThreadStarted(); |  340   sync_thread->WaitUntilThreadStarted(); | 
|  341  |  341  | 
|  342   // The test verifies that the sync thread doesn't block because |  342   // The test verifies that the sync thread doesn't block because | 
|  343   // of the blocked DB thread and can finish the shutdown. |  343   // of the blocked DB thread and can finish the shutdown. | 
|  344   sync_thread->message_loop()->RunUntilIdle(); |  344   sync_thread->message_loop()->RunUntilIdle(); | 
|  345  |  345  | 
|  346   db_thread_lock_.Release(); |  346   db_thread_lock_.Release(); | 
|  347  |  347  | 
|  348   // Run the main thread loop until all workers have been removed and the |  348   // Run the main thread loop until all workers have been removed and the | 
|  349   // registrar destroyed. |  349   // registrar destroyed. | 
|  350   run_loop_.Run(); |  350   run_loop_.Run(); | 
|  351 } |  351 } | 
|  352  |  352  | 
|  353 }  // namespace |  353 }  // namespace | 
|  354  |  354  | 
|  355 }  // namespace browser_sync |  355 }  // namespace browser_sync | 
| OLD | NEW |