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. |