1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
content / browser / browser_thread_browsertest.cc [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/run_loop.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/browser_test.h"
#include "content/public/test/content_browser_test.h"
#include "content/public/test/test_utils.h"
namespace content {
class BrowserThreadPostTaskBeforeInitBrowserTest : public ContentBrowserTest {
protected:
void SetUp() override {
// This should fail because the ThreadPool + TaskExecutor weren't created
// yet.
EXPECT_DCHECK_DEATH(
GetIOThreadTaskRunner({})->PostTask(FROM_HERE, base::DoNothing()));
// Obtaining a TaskRunner should also fail.
EXPECT_DCHECK_DEATH(GetIOThreadTaskRunner({}));
ContentBrowserTest::SetUp();
}
};
IN_PROC_BROWSER_TEST_F(BrowserThreadPostTaskBeforeInitBrowserTest,
ExpectFailures) {}
IN_PROC_BROWSER_TEST_F(ContentBrowserTest, ExpectedThreadPriorities) {
base::ThreadPriorityForTest expected_priority;
// In browser main loop the kDisplayCritical thread type is set.
#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
// TODO(40230522): ChromeOS and Linux result a kNormal priority unexpectedly.
expected_priority = base::ThreadPriorityForTest::kNormal;
#else
expected_priority = base::ThreadPriorityForTest::kDisplay;
#endif
EXPECT_EQ(base::PlatformThread::GetCurrentThreadPriorityForTest(),
expected_priority);
GetIOThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
[](base::ThreadPriorityForTest expected_priority) {
EXPECT_EQ(base::PlatformThread::GetCurrentThreadPriorityForTest(),
expected_priority);
},
expected_priority));
BrowserThread::RunAllPendingTasksOnThreadForTesting(BrowserThread::IO);
}
} // namespace content