Chromium Code Reviews| Index: chrome/browser/history/top_sites_extension_test.cc |
| diff --git a/chrome/browser/history/top_sites_extension_test.cc b/chrome/browser/history/top_sites_extension_test.cc |
| index 99078ceba6fa8e8094a76de2128aef9192dead14..85fc5662457e40473d486b12230c41ef7846cfec 100644 |
| --- a/chrome/browser/history/top_sites_extension_test.cc |
| +++ b/chrome/browser/history/top_sites_extension_test.cc |
| @@ -5,7 +5,10 @@ |
| #include "base/values.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/extensions/extension_function_test_utils.h" |
| +#include "chrome/browser/history/top_sites.h" |
| #include "chrome/browser/history/top_sites_extension_api.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/ui/browser.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| using namespace extension_function_test_utils; |
| @@ -13,20 +16,45 @@ using namespace extension_function_test_utils; |
| namespace { |
| class TopSitesExtensionTest : public InProcessBrowserTest { |
| + public: |
| + TopSitesExtensionTest() : top_sites_inited_(false), waiting_(false) { |
| + } |
| + |
| + void SetUpOnMainThread() { |
| + history::TopSites* ts = browser()->profile()->GetTopSites(); |
|
vandebo (ex-Chrome)
2011/10/27 23:11:44
nit: full variable name.
|
| + |
| + // This may return async or sync. If sync, top_sites_inited_ will be true |
| + // before we get to the conditional below. Otherwise, we'll run a nested |
| + // message loop until the async callback. |
| + ts->GetMostVisitedURLs( |
| + &consumer_, |
| + base::Bind(&TopSitesExtensionTest::OnTopSitesAvailable, this)); |
| + |
| + if (!top_sites_inited_) { |
| + waiting_ = true; |
| + MessageLoop::current()->Run(); |
| + } |
| + |
| + // By this point, we know topsites has loaded. We can run the tests now. |
| + } |
| + |
| + private: |
| + void OnTopSitesAvailable(const history::MostVisitedURLList& data) { |
| + if (waiting_) { |
| + MessageLoop::current()->Quit(); |
| + waiting_ = false; |
| + } |
| + top_sites_inited_ = true; |
| + } |
| + |
| + CancelableRequestConsumer consumer_; |
| + bool top_sites_inited_; |
| + bool waiting_; |
| }; |
| } // namespace |
| -// Test started failing soon after commit. http://crbug.com/101783 |
| -#if defined(OS_WIN) |
| -#define MAYBE_GetTopSites FAILS_GetTopSites |
| -#elif defined(OS_LINUX) |
| -#define MAYBE_GetTopSites FLAKY_GetTopSites |
| -#else |
| -#define MAYBE_GetTopSites GetTopSites |
| -#endif |
| - |
| -IN_PROC_BROWSER_TEST_F(TopSitesExtensionTest, MAYBE_GetTopSites) { |
| +IN_PROC_BROWSER_TEST_F(TopSitesExtensionTest, GetTopSites) { |
| scoped_refptr<GetTopSitesFunction> get_top_sites_function( |
| new GetTopSitesFunction()); |
| // Without a callback the function will not generate a result. |