
In most cases, using ThreadTaskRunnerHandle::Get() or SequencedTaskRunnerHandle::Get() in renderers is semantically wrong. Additionally, these task usage prevents flexible renderer scheduing, e.g. throttling tasks for a hidden iframe. This CL introduces presubmit checks to forbide newly introducing those Get() usages. Bug: 827065 Change-Id: I92cd9d4207d5664e42763939e5c1c8d293897799 Reviewed-on: https://chromium-review.googlesource.com/995241 Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Alexander Timin <altimin@chromium.org> Reviewed-by: Kentaro Hara <haraken@chromium.org> Commit-Queue: Hajime Hoshi <hajimehoshi@chromium.org> Cr-Commit-Position: refs/heads/master@{#549759}
37 lines
1.4 KiB
Python
Executable File
37 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# 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.
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
import PRESUBMIT
|
|
|
|
sys.path.append(
|
|
os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
|
|
from PRESUBMIT_test_mocks import (MockInputApi, MockOutputApi, MockAffectedFile)
|
|
|
|
class GetTest(unittest.TestCase):
|
|
def testNewUsageThreadTaskRunnerHandleGet(self):
|
|
diff = ['scoped_refptr<SingleThreadTaskRunner> task_runner =',
|
|
' base::ThreadTaskRunnerHandle::Get()']
|
|
input_api = MockInputApi()
|
|
input_api.files = [MockAffectedFile('content/renderer/foo.cc', diff)]
|
|
errors = PRESUBMIT._CheckForUseOfGlobalTaskRunnerGetter(input_api,
|
|
MockOutputApi())
|
|
self.assertEqual(1, len(errors))
|
|
|
|
def testNewUsageSequencedTaskRunnerHandleGet(self):
|
|
diff = ['scoped_refptr<SequencedThreadTaskRunner> task_runner =',
|
|
' base::SequencedTaskRunnerHandle::Get()']
|
|
input_api = MockInputApi()
|
|
input_api.files = [MockAffectedFile('content/renderer/foo.cc', diff)]
|
|
errors = PRESUBMIT._CheckForUseOfGlobalTaskRunnerGetter(input_api,
|
|
MockOutputApi())
|
|
self.assertEqual(1, len(errors))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|