blob: 6be9acfad94bf35766aa3a0090f1007472be7fdc [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/bind_helpers.h"
#include "base/task/post_task.h"
#include "base/test/gtest_util.h"
#include "build/build_config.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/content_browser_test.h"
namespace content {
class BrowserThreadPostTaskBeforeInitBrowserTest : public ContentBrowserTest {
protected:
void SetUp() override {
// This should fail because the TaskScheduler + TaskExecutor weren't created
// yet.
EXPECT_DCHECK_DEATH(base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO},
base::DoNothing()));
// Obtaining a TaskRunner should also fail.
EXPECT_DCHECK_DEATH(base::CreateTaskRunnerWithTraits({BrowserThread::IO}));
ContentBrowserTest::SetUp();
}
};
IN_PROC_BROWSER_TEST_F(BrowserThreadPostTaskBeforeInitBrowserTest,
ExpectFailures) {}
class BrowserThreadPostTaskBeforeThreadCreationBrowserTest
: public ContentBrowserTest {
protected:
void CreatedBrowserMainParts(BrowserMainParts* browser_main_parts) override {
// This should fail because the IO thread hasn't been initialized yet.
EXPECT_DCHECK_DEATH(base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO},
base::DoNothing()));
// Obtaining a TaskRunner should work, because the TaskExecutor was
// registered already.
auto task_runner = base::CreateTaskRunnerWithTraits({BrowserThread::IO});
// But posting should still fail.
EXPECT_DCHECK_DEATH(task_runner->PostTask(FROM_HERE, base::DoNothing()));
}
};
// Flaky on Chrome OS and Linux. https://crbug.com/910834
#if defined(OS_CHROMEOS) || defined(OS_LINUX)
#define MAYBE_ExpectFailures DISABLED_ExpectFailures
#else
#define MAYBE_ExpectFailures ExpectFailures
#endif
IN_PROC_BROWSER_TEST_F(BrowserThreadPostTaskBeforeThreadCreationBrowserTest,
MAYBE_ExpectFailures) {}
} // namespace content