| Index: chrome/browser/autocomplete/history_quick_provider_unittest.cc
 | 
| diff --git a/chrome/browser/autocomplete/history_quick_provider_unittest.cc b/chrome/browser/autocomplete/history_quick_provider_unittest.cc
 | 
| index acdf836e35d93e6c5097483edaa52beef07b16d1..dd9d84023771c35c93ad23bcc16e8c8211d5f941 100644
 | 
| --- a/chrome/browser/autocomplete/history_quick_provider_unittest.cc
 | 
| +++ b/chrome/browser/autocomplete/history_quick_provider_unittest.cc
 | 
| @@ -51,6 +51,8 @@ using base::TimeDelta;
 | 
|  
 | 
|  using content::BrowserThread;
 | 
|  
 | 
| +namespace {
 | 
| +
 | 
|  struct TestURLInfo {
 | 
|    std::string url;
 | 
|    std::string title;
 | 
| @@ -150,6 +152,36 @@ void WaitForURLsDeletedNotification(history::HistoryService* history_service) {
 | 
|    runner.Run();
 | 
|  }
 | 
|  
 | 
| +// Post history_backend->GetURL() to the history thread and stop the originating
 | 
| +// thread's message loop when done.
 | 
| +class GetURLTask : public history::HistoryDBTask {
 | 
| + public:
 | 
| +  GetURLTask(const GURL& url, bool* result_storage)
 | 
| +      : result_storage_(result_storage),
 | 
| +        url_(url) {
 | 
| +  }
 | 
| +
 | 
| +  bool RunOnDBThread(history::HistoryBackend* backend,
 | 
| +                     history::HistoryDatabase* db) override {
 | 
| +    *result_storage_ = backend->GetURL(url_, NULL);
 | 
| +    return true;
 | 
| +  }
 | 
| +
 | 
| +  void DoneRunOnMainThread() override {
 | 
| +    base::MessageLoop::current()->Quit();
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  ~GetURLTask() override {}
 | 
| +
 | 
| +  bool* result_storage_;
 | 
| +  const GURL url_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(GetURLTask);
 | 
| +};
 | 
| +
 | 
| +}  // namespace
 | 
| +
 | 
|  class HistoryQuickProviderTest : public testing::Test {
 | 
|   public:
 | 
|    HistoryQuickProviderTest()
 | 
| @@ -208,10 +240,19 @@ class HistoryQuickProviderTest : public testing::Test {
 | 
|                           base::string16 expected_fill_into_edit,
 | 
|                           base::string16 autocompletion);
 | 
|  
 | 
| +  // TODO(shess): From history_service.h in reference to history_backend:
 | 
| +  // > This class has most of the implementation and runs on the 'thread_'.
 | 
| +  // > You MUST communicate with this class ONLY through the thread_'s
 | 
| +  // > message_loop().
 | 
| +  // Direct use of this object in tests is almost certainly not thread-safe.
 | 
|    history::HistoryBackend* history_backend() {
 | 
|      return history_service_->history_backend_.get();
 | 
|    }
 | 
|  
 | 
| +  // Call history_backend()->GetURL(url, NULL) on the history thread, returning
 | 
| +  // the result.
 | 
| +  bool GetURLProxy(const GURL& url);
 | 
| +
 | 
|    base::MessageLoopForUI message_loop_;
 | 
|    content::TestBrowserThread ui_thread_;
 | 
|    content::TestBrowserThread file_thread_;
 | 
| @@ -394,6 +435,18 @@ void HistoryQuickProviderTest::RunTestWithCursor(
 | 
|    EXPECT_EQ(expected_fill_into_edit, ac_matches_[0].fill_into_edit);
 | 
|  }
 | 
|  
 | 
| +bool HistoryQuickProviderTest::GetURLProxy(const GURL& url) {
 | 
| +  base::CancelableTaskTracker task_tracker;
 | 
| +  bool result = false;
 | 
| +  history_service_->ScheduleDBTask(
 | 
| +      scoped_ptr<history::HistoryDBTask>(new GetURLTask(url, &result)),
 | 
| +      &task_tracker);
 | 
| +  // Run the message loop until GetURLTask::DoneRunOnMainThread stops it.  If
 | 
| +  // the test hangs, DoneRunOnMainThread isn't being invoked correctly.
 | 
| +  base::MessageLoop::current()->Run();
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
|  TEST_F(HistoryQuickProviderTest, SimpleSingleMatch) {
 | 
|    std::vector<std::string> expected_urls;
 | 
|    expected_urls.push_back("http://slashdot.org/favorite_page.html");
 | 
| @@ -616,7 +669,7 @@ TEST_F(HistoryQuickProviderTest, DeleteMatch) {
 | 
|            ASCIIToUTF16("slashdot.org/favorite_page.html"),
 | 
|                    ASCIIToUTF16(".org/favorite_page.html"));
 | 
|    EXPECT_EQ(1U, ac_matches_.size());
 | 
| -  EXPECT_TRUE(history_backend()->GetURL(test_url, NULL));
 | 
| +  EXPECT_TRUE(GetURLProxy(test_url));
 | 
|    provider_->DeleteMatch(ac_matches_[0]);
 | 
|  
 | 
|    // Check that the underlying URL is deleted from the history DB (this implies
 | 
| @@ -626,7 +679,7 @@ TEST_F(HistoryQuickProviderTest, DeleteMatch) {
 | 
|    // To ensure that the deletion has been propagated everywhere before we start
 | 
|    // verifying post-deletion states, first wait until we see the notification.
 | 
|    WaitForURLsDeletedNotification(history_service_);
 | 
| -  EXPECT_FALSE(history_backend()->GetURL(test_url, NULL));
 | 
| +  EXPECT_FALSE(GetURLProxy(test_url));
 | 
|  
 | 
|    // Just to be on the safe side, explicitly verify that we have deleted enough
 | 
|    // data so that we will not be serving the same result again.
 | 
| 
 |