diff options
author | rockot@chromium.org <rockot@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-04 06:04:25 +0000 |
---|---|---|
committer | rockot@chromium.org <rockot@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-04 06:04:25 +0000 |
commit | 1ee7f899b6db8fbfbc19efd2f236d077752528e1 (patch) | |
tree | 3623bc3e13f8c468afa4a7c15d8d2e4d118e675c /extensions | |
parent | 644533a496b33e3c89b7ec22cd24464ce4425fad (diff) | |
download | chromium_src-1ee7f899b6db8fbfbc19efd2f236d077752528e1.zip chromium_src-1ee7f899b6db8fbfbc19efd2f236d077752528e1.tar.gz chromium_src-1ee7f899b6db8fbfbc19efd2f236d077752528e1.tar.bz2 |
Move extension_function_histogram_value to src/extensions
BUG=348248
Review URL: https://codereview.chromium.org/180373005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254689 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/DEPS | 1 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT.py | 304 | ||||
-rwxr-xr-x | extensions/browser/PRESUBMIT_test.py | 236 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_1.txt | 35 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_10.txt | 29 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_11.txt | 32 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_2.txt | 33 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_3.txt | 34 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_4.txt | 5 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_5.txt | 5 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_6.txt | 9 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_7.txt | 40 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_8.txt | 35 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_new_file_9.txt | 38 | ||||
-rw-r--r-- | extensions/browser/PRESUBMIT_test_old_file.txt | 34 | ||||
-rw-r--r-- | extensions/browser/extension_function.h | 2 | ||||
-rw-r--r-- | extensions/browser/extension_function_histogram_value.h | 768 |
17 files changed, 1638 insertions, 2 deletions
diff --git a/extensions/browser/DEPS b/extensions/browser/DEPS index 5923763..3ab23468 100644 --- a/extensions/browser/DEPS +++ b/extensions/browser/DEPS @@ -16,7 +16,6 @@ include_rules = [ "+chrome/browser/extensions/api/preference/preference_api.h", "+chrome/browser/extensions/api/runtime/runtime_api.h", "+chrome/browser/extensions/extension_function_dispatcher.h", - "+chrome/browser/extensions/extension_function_histogram_value.h", "+chrome/browser/extensions/extension_host.h", "+chrome/browser/extensions/extension_service.h", "+chrome/browser/renderer_host/chrome_render_message_filter.h", diff --git a/extensions/browser/PRESUBMIT.py b/extensions/browser/PRESUBMIT.py new file mode 100644 index 0000000..c8777a6 --- /dev/null +++ b/extensions/browser/PRESUBMIT.py @@ -0,0 +1,304 @@ +# Copyright 2014 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. + +"""Chromium presubmit script for src/extensions/browser. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into gcl. +""" + +def GetPreferredTrySlaves(): + return ['linux_chromeos'] + +class HistogramValueChecker(object): + """Verify that changes to "extension_function_histogram_value.h" are valid. + + See comments at the top of the "extension_function_histogram_value.h" file + for what are considered valid changes. There are situations where this script + gives false positive warnings, i.e. it warns even though the edit is + legitimate. Since the script warns using prompt warnings, the user can always + choose to continue. The main point is to attract the attention to all + (potentially or not) invalid edits. + + """ + + # The name of the file we want to check against + LOCAL_PATH = "extensions/browser/extension_function_histogram_value.h" + + # The markers we look for in the above source file as delimiters of the enum + # definition. + ENUM_START_MARKER = "enum HistogramValue {" + ENUM_END_MARKER = " // Last entry:" + + def __init__(self, input_api, output_api): + self.input_api = input_api + self.output_api = output_api + self.results = [] + + class EnumRange(object): + """Represents a range of line numbers (1-based)""" + def __init__(self, first_line, last_line): + self.first_line = first_line + self.last_line = last_line + + def Count(self): + return self.last_line - self.first_line + 1 + + def Contains(self, line_num): + return self.first_line <= line_num and line_num <= self.last_line + + def LogInfo(self, message): + self.input_api.logging.info(message) + return + + def LogDebug(self, message): + self.input_api.logging.debug(message) + return + + def ComputeEnumRangeInContents(self, contents): + """Returns an |EnumRange| object representing the line extent of the + HistogramValue enum members in |contents|. The line numbers are 1-based, + compatible with line numbers returned by AffectedFile.ChangeContents(). + |contents| is a list of strings reprenting the lines of a text file. + + If either ENUM_START_MARKER or ENUM_END_MARKER cannot be found in + |contents|, returns None and emits detailed warnings about the problem. + + """ + first_enum_line = 0 + last_enum_line = 0 + line_num = 1 # Line numbers are 1-based + for line in contents: + if line.startswith(self.ENUM_START_MARKER): + first_enum_line = line_num + 1 + elif line.startswith(self.ENUM_END_MARKER): + last_enum_line = line_num + line_num += 1 + + if first_enum_line == 0: + self.EmitWarning("The presubmit script could not find the start of the " + "enum definition (\"%s\"). Did the enum definition " + "change?" % self.ENUM_START_MARKER) + return None + + if last_enum_line == 0: + self.EmitWarning("The presubmit script could not find the end of the " + "enum definition (\"%s\"). Did the enum definition " + "change?" % self.ENUM_END_MARKER) + return None + + if first_enum_line >= last_enum_line: + self.EmitWarning("The presubmit script located the start of the enum " + "definition (\"%s\" at line %d) *after* its end " + "(\"%s\" at line %d). Something is not quite right." + % (self.ENUM_START_MARKER, first_enum_line, + self.ENUM_END_MARKER, last_enum_line)) + return None + + self.LogInfo("Line extent of |HistogramValue| enum definition: " + "first_line=%d, last_line=%d." + % (first_enum_line, last_enum_line)) + return self.EnumRange(first_enum_line, last_enum_line) + + def ComputeEnumRangeInNewFile(self, affected_file): + return self.ComputeEnumRangeInContents(affected_file.NewContents()) + + def GetLongMessage(self): + return str("The file \"%s\" contains the definition of the " + "|HistogramValue| enum which should be edited in specific ways " + "only - *** read the comments at the top of the header file ***" + ". There are changes to the file that may be incorrect and " + "warrant manual confirmation after review. Note that this " + "presubmit script can not reliably report the nature of all " + "types of invalid changes, especially when the diffs are " + "complex. For example, an invalid deletion may be reported " + "whereas the change contains a valid rename." + % self.LOCAL_PATH) + + def EmitWarning(self, message, line_number=None, line_text=None): + """Emits a presubmit prompt warning containing the short message + |message|. |item| is |LOCAL_PATH| with optional |line_number| and + |line_text|. + + """ + if line_number is not None and line_text is not None: + item = "%s(%d): %s" % (self.LOCAL_PATH, line_number, line_text) + elif line_number is not None: + item = "%s(%d)" % (self.LOCAL_PATH, line_number) + else: + item = self.LOCAL_PATH + long_message = self.GetLongMessage() + self.LogInfo(message) + self.results.append( + self.output_api.PresubmitPromptWarning(message, [item], long_message)) + + def CollectRangesInsideEnumDefinition(self, affected_file, + first_line, last_line): + """Returns a list of triplet (line_start, line_end, line_text) of ranges of + edits changes. The |line_text| part is the text at line |line_start|. + Since it used only for reporting purposes, we do not need all the text + lines in the range. + + """ + results = [] + previous_line_number = 0 + previous_range_start_line_number = 0 + previous_range_start_text = "" + + def addRange(): + tuple = (previous_range_start_line_number, + previous_line_number, + previous_range_start_text) + results.append(tuple) + + for line_number, line_text in affected_file.ChangedContents(): + if first_line <= line_number and line_number <= last_line: + self.LogDebug("Line change at line number " + str(line_number) + ": " + + line_text) + # Start a new interval if none started + if previous_range_start_line_number == 0: + previous_range_start_line_number = line_number + previous_range_start_text = line_text + # Add new interval if we reached past the previous one + elif line_number != previous_line_number + 1: + addRange() + previous_range_start_line_number = line_number + previous_range_start_text = line_text + previous_line_number = line_number + + # Add a last interval if needed + if previous_range_start_line_number != 0: + addRange() + return results + + def CheckForFileDeletion(self, affected_file): + """Emits a warning notification if file has been deleted """ + if not affected_file.NewContents(): + self.EmitWarning("The file seems to be deleted in the changelist. If " + "your intent is to really delete the file, the code in " + "PRESUBMIT.py should be updated to remove the " + "|HistogramValueChecker| class."); + return False + return True + + def GetDeletedLinesFromScmDiff(self, affected_file): + """Return a list of of line numbers (1-based) corresponding to lines + deleted from the new source file (if they had been present in it). Note + that if multiple contiguous lines have been deleted, the returned list will + contain contiguous line number entries. To prevent false positives, we + return deleted line numbers *only* from diff chunks which decrease the size + of the new file. + + Note: We need this method because we have access to neither the old file + content nor the list of "delete" changes from the current presubmit script + API. + + """ + results = [] + line_num = 0 + deleting_lines = False + for line in affected_file.GenerateScmDiff().splitlines(): + # Parse the unified diff chunk optional section heading, which looks like + # @@ -l,s +l,s @@ optional section heading + m = self.input_api.re.match( + r'^@@ \-([0-9]+)\,([0-9]+) \+([0-9]+)\,([0-9]+) @@', line) + if m: + old_line_num = int(m.group(1)) + old_size = int(m.group(2)) + new_line_num = int(m.group(3)) + new_size = int(m.group(4)) + line_num = new_line_num + # Return line numbers only from diff chunks decreasing the size of the + # new file + deleting_lines = old_size > new_size + continue + if not line.startswith('-'): + line_num += 1 + if deleting_lines and line.startswith('-') and not line.startswith('--'): + results.append(line_num) + return results + + def CheckForEnumEntryDeletions(self, affected_file): + """Look for deletions inside the enum definition. We currently use a + simple heuristics (not 100% accurate): if there are deleted lines inside + the enum definition, this might be a deletion. + + """ + range_new = self.ComputeEnumRangeInNewFile(affected_file) + if not range_new: + return False + + is_ok = True + for line_num in self.GetDeletedLinesFromScmDiff(affected_file): + if range_new.Contains(line_num): + self.EmitWarning("It looks like you are deleting line(s) from the " + "enum definition. This should never happen.", + line_num) + is_ok = False + return is_ok + + def CheckForEnumEntryInsertions(self, affected_file): + range = self.ComputeEnumRangeInNewFile(affected_file) + if not range: + return False + + first_line = range.first_line + last_line = range.last_line + + # Collect the range of changes inside the enum definition range. + is_ok = True + for line_start, line_end, line_text in \ + self.CollectRangesInsideEnumDefinition(affected_file, + first_line, + last_line): + # The only edit we consider valid is adding 1 or more entries *exactly* + # at the end of the enum definition. Every other edit inside the enum + # definition will result in a "warning confirmation" message. + # + # TODO(rpaquay): We currently cannot detect "renames" of existing entries + # vs invalid insertions, so we sometimes will warn for valid edits. + is_valid_edit = (line_end == last_line - 1) + + self.LogDebug("Edit range in new file at starting at line number %d and " + "ending at line number %d: valid=%s" + % (line_start, line_end, is_valid_edit)) + + if not is_valid_edit: + self.EmitWarning("The change starting at line %d and ending at line " + "%d is *not* located *exactly* at the end of the " + "enum definition. Unless you are renaming an " + "existing entry, this is not a valid changes, as new " + "entries should *always* be added at the end of the " + "enum definition, right before the 'ENUM_BOUNDARY' " + "entry." % (line_start, line_end), + line_start, + line_text) + is_ok = False + return is_ok + + def PerformChecks(self, affected_file): + if not self.CheckForFileDeletion(affected_file): + return + if not self.CheckForEnumEntryDeletions(affected_file): + return + if not self.CheckForEnumEntryInsertions(affected_file): + return + + def ProcessHistogramValueFile(self, affected_file): + self.LogInfo("Start processing file \"%s\"" % affected_file.LocalPath()) + self.PerformChecks(affected_file) + self.LogInfo("Done processing file \"%s\"" % affected_file.LocalPath()) + + def Run(self): + for file in self.input_api.AffectedFiles(include_deletes=True): + if file.LocalPath() == self.LOCAL_PATH: + self.ProcessHistogramValueFile(file) + return self.results + +def CheckChangeOnUpload(input_api, output_api): + results = [] + results += HistogramValueChecker(input_api, output_api).Run() + results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api) + return results + diff --git a/extensions/browser/PRESUBMIT_test.py b/extensions/browser/PRESUBMIT_test.py new file mode 100755 index 0000000..99cabf5 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python +# Copyright 2014 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 difflib +import os +import re +import unittest + +import PRESUBMIT + +class MockLogging(object): + def __init__(self): + self.lines = [] + + def info(self, message): + self.lines.append(message) + + def debug(self, message): + self.lines.append(message) + +class MockInputApi(object): + def __init__(self): + self.re = re + self.os_path = os.path + self.files = [] + self.is_committing = False + self.logging = MockLogging() + + def AffectedFiles(self, include_deletes=None): + return self.files + + +class MockOutputApi(object): + class PresubmitResult(object): + def __init__(self, message, items=None, long_text=''): + self.message = message + self.items = items + self.long_text = long_text + + class PresubmitError(PresubmitResult): + def __init__(self, message, items, long_text=''): + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) + self.type = 'error' + + class PresubmitPromptWarning(PresubmitResult): + def __init__(self, message, items, long_text=''): + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) + self.type = 'warning' + + class PresubmitNotifyResult(PresubmitResult): + def __init__(self, message, items, long_text=''): + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) + self.type = 'notify' + + +class MockFile(object): + def __init__(self, local_path, old_contents, new_contents): + self._local_path = local_path + self._new_contents = new_contents + self._old_contents = old_contents + self._cached_changed_contents = None + + def ChangedContents(self): + return self._changed_contents + + def NewContents(self): + return self._new_contents + + def LocalPath(self): + return self._local_path + + def IsDirectory(self): + return False + + def GenerateScmDiff(self): + result = "" + for line in difflib.unified_diff(self._old_contents, self._new_contents, + self._local_path, self._local_path): + result += line + return result + + # NOTE: This method is a copy of ChangeContents method of AffectedFile in + # presubmit_support.py + def ChangedContents(self): + """Returns a list of tuples (line number, line text) of all new lines. + + This relies on the scm diff output describing each changed code section + with a line of the form + + ^@@ <old line num>,<old size> <new line num>,<new size> @@$ + """ + if self._cached_changed_contents is not None: + return self._cached_changed_contents[:] + self._cached_changed_contents = [] + line_num = 0 + + if self.IsDirectory(): + return [] + + for line in self.GenerateScmDiff().splitlines(): + m = re.match(r'^@@ [0-9\,\+\-]+ \+([0-9]+)\,[0-9]+ @@', line) + if m: + line_num = int(m.groups(1)[0]) + continue + if line.startswith('+') and not line.startswith('++'): + self._cached_changed_contents.append((line_num, line[1:])) + if not line.startswith('-'): + line_num += 1 + return self._cached_changed_contents[:] + + +class MockChange(object): + def __init__(self, changed_files): + self._changed_files = changed_files + + def LocalPaths(self): + return self._changed_files + + +class HistogramValueCheckerTest(unittest.TestCase): + TEST_FILE_PATTERN = "PRESUBMIT_test_new_file_%s.txt" + + def _ReadTextFileContents(self, path): + """Given a path, returns a list of strings corresponding to the text lines + in the file. Reads files in text format. + + """ + fo = open(path, 'r') + try: + contents = fo.readlines() + finally: + fo.close() + return contents + + def _ReadInputFile(self): + return self._ReadTextFileContents("PRESUBMIT_test_old_file.txt") + + def _PrepareTest(self, new_file_path): + old_contents = self._ReadInputFile() + if not new_file_path: + new_contents = [] + else: + new_contents = self._ReadTextFileContents(new_file_path) + input_api = MockInputApi() + mock_file = MockFile(PRESUBMIT.HistogramValueChecker.LOCAL_PATH, + old_contents, + new_contents) + input_api.files.append(mock_file) + output_api = MockOutputApi() + return input_api, output_api + + def _RunTest(self, new_file_path): + input_api, output_api = self._PrepareTest(new_file_path) + checker = PRESUBMIT.HistogramValueChecker(input_api, output_api) + results = checker.Run() + return results + + def testDeleteFile(self): + results = self._RunTest(new_file_path=None) + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We hould get a single warning about file deletion.") + + def testSimpleValidEdit(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "1") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(0, len(results), + "We should get no warning for simple edits.") + + def testSingleDeletionOfEntry(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "2") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for an entry deletion.") + + def testSingleRenameOfEntry(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "3") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for an entry rename, even " + "though it is not optimal.") + + def testMissingEnumStartOfEntry(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "4") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for a missing enum marker.") + + def testMissingEnumEndOfEntry(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "5") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for a missing enum marker.") + + def testInvertedEnumMarkersOfEntry(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "6") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for inverted enum markers.") + + def testMultipleInvalidEdits(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "7") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(3, len(results), + "We should get 3 warnings (one per edit).") + + def testSingleInvalidInserts(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "8") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(1, len(results), + "We should get a warning for a single invalid " + "insertion inside the enum.") + + def testMulitpleValidInserts(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "9") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(0, len(results), + "We should not get a warning mulitple valid edits") + + def testSingleValidDeleteOutsideOfEnum(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "10") + # TODO(rpaquay) How to check it's the expected warning?' + self.assertEquals(0, len(results), + "We should not get a warning for a deletion outside of " + "the enum") + + def testCommentIsNotEnumEndMarker(self): + results = self._RunTest(self.TEST_FILE_PATTERN % "11") + self.assertEquals(1, len(results), + "We should get a warning if '// Last Entry' is not the " + "enum end marker") + +if __name__ == '__main__': + unittest.main() diff --git a/extensions/browser/PRESUBMIT_test_new_file_1.txt b/extensions/browser/PRESUBMIT_test_new_file_1.txt new file mode 100644 index 0000000..cf894a7 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_1.txt @@ -0,0 +1,35 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + VALID_INSERTION, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_10.txt b/extensions/browser/PRESUBMIT_test_new_file_10.txt new file mode 100644 index 0000000..745b130 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_10.txt @@ -0,0 +1,29 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_11.txt b/extensions/browser/PRESUBMIT_test_new_file_11.txt new file mode 100644 index 0000000..d02dd03 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_11.txt @@ -0,0 +1,32 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_2.txt b/extensions/browser/PRESUBMIT_test_new_file_2.txt new file mode 100644 index 0000000..e242545 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_2.txt @@ -0,0 +1,33 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_3.txt b/extensions/browser/PRESUBMIT_test_new_file_3.txt new file mode 100644 index 0000000..3e18f29b --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_3.txt @@ -0,0 +1,34 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES2, // Rename here!!! + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_4.txt b/extensions/browser/PRESUBMIT_test_new_file_4.txt new file mode 100644 index 0000000..8bab558 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_4.txt @@ -0,0 +1,5 @@ +// Missing "HistrogramValue" enum + + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY diff --git a/extensions/browser/PRESUBMIT_test_new_file_5.txt b/extensions/browser/PRESUBMIT_test_new_file_5.txt new file mode 100644 index 0000000..5c75baa --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_5.txt @@ -0,0 +1,5 @@ + +enum HistogramValue { + + +// Missing end enum marker diff --git a/extensions/browser/PRESUBMIT_test_new_file_6.txt b/extensions/browser/PRESUBMIT_test_new_file_6.txt new file mode 100644 index 0000000..d5d847b --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_6.txt @@ -0,0 +1,9 @@ +// End enum marker is before start enum marker + + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +// +enum HistogramValue { + UNKNOWN = 0, + diff --git a/extensions/browser/PRESUBMIT_test_new_file_7.txt b/extensions/browser/PRESUBMIT_test_new_file_7.txt new file mode 100644 index 0000000..f928b71 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_7.txt @@ -0,0 +1,40 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + BROWSINGDATA_REMOVEWEBSQL2, + BROWSINGDATA_REMOVEWEBSQL3, + BROWSINGDATA_REMOVEWEBSQL4, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + DOWNLOADSINTERNAL_DETERMINEFILENAME2, + DOWNLOADSINTERNAL_DETERMINEFILENAME3, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + MEDIAGALLERIESPRIVATE_GETHANDLERS2, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_8.txt b/extensions/browser/PRESUBMIT_test_new_file_8.txt new file mode 100644 index 0000000..8142053 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_8.txt @@ -0,0 +1,35 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + BROWSINGDATA_REMOVEWEBSQL2, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_new_file_9.txt b/extensions/browser/PRESUBMIT_test_new_file_9.txt new file mode 100644 index 0000000..75d8cce --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_new_file_9.txt @@ -0,0 +1,38 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + BLAH1, + BLAH2, + BLAH3, + BLAH4, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/PRESUBMIT_test_old_file.txt b/extensions/browser/PRESUBMIT_test_old_file.txt new file mode 100644 index 0000000..51cd734 --- /dev/null +++ b/extensions/browser/PRESUBMIT_test_old_file.txt @@ -0,0 +1,34 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + + +namespace extensions { +namespace functions { + +// +// This is some comment. +// This is another comment. +// This is yet another comment. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ diff --git a/extensions/browser/extension_function.h b/extensions/browser/extension_function.h index b0af0ae..996fbce 100644 --- a/extensions/browser/extension_function.h +++ b/extensions/browser/extension_function.h @@ -15,9 +15,9 @@ #include "base/memory/weak_ptr.h" #include "base/process/process.h" #include "base/sequenced_task_runner_helpers.h" -#include "chrome/browser/extensions/extension_function_histogram_value.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/console_message_level.h" +#include "extensions/browser/extension_function_histogram_value.h" #include "extensions/browser/info_map.h" #include "extensions/common/extension.h" #include "ipc/ipc_message.h" diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h new file mode 100644 index 0000000..910b39b --- /dev/null +++ b/extensions/browser/extension_function_histogram_value.h @@ -0,0 +1,768 @@ +// Copyright 2014 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ + +namespace extensions { +namespace functions { + +// Short version: +// *Never* reorder or delete entries in the |HistogramValue| enumeration. +// When creating a new extension function, add a new entry at the end of the +// enum, just prior to ENUM_BOUNDARY. +// +// Long version: +// This enumeration is used to associate a unique integer value to each +// extension function so that their usage can be recorded in histogram charts. +// Given we want the values recorded in the these charts to remain stable over +// time for comparison purposes, once an entry has been added to the +// enumeration, it should never be removed or moved to another spot in the +// enum. +// +// Here are instructions how to manage entries depending on what you are trying +// to achieve. +// +// 1) Creating a new extension function: +// +// Add a new entry at the end of the |HistogramValue| enum. The name of the +// entry should follow this algorithm: +// a) Take the string value passed as first argument to +// DECLARE_EXTENSION_FUNCTION. +// b) Replace '.' with '_'. +// c) Make all letters uppercase. +// +// Example: "tabs.create" -> TABS_CREATE +// +// 2) Deleting an existing function: +// +// Given an existing entry should *never* be removed from this enumeration, +// it is recommended to add a "DELETED_" prefix to the existing entry. +// +// 3) Renaming an existing function: +// +// There are 2 options, depending if you want to keep accruing data in the +// *existing* histogram stream or in a *new* one. +// +// a) If you want keep recording usages of the extension function in the +// *existing* histogram stream, simply rename the enum entry to match +// the new extension function name, following the same naming rule as +// mentioned in 1). The enum entry will keep the same underlying integer +// value, so the same histogram stream will be used for recording +// usages. +// +// b) If you want start recording usages of the extension function to in a +// *new* histogram stream, follow the instructions in step 1) and 2) +// above. This will effectively deprecate the old histogram stream and +// creates a new one for the new function name. +// +enum HistogramValue { + UNKNOWN = 0, + WEBNAVIGATION_GETALLFRAMES, + BROWSINGDATA_REMOVEWEBSQL, + ALARMS_CREATE, + FILEBROWSERPRIVATE_REMOVEFILEWATCH, + COOKIES_GET, + FONTSETTINGS_GETMINIMUMFONTSIZE, + CHROMEOSINFOPRIVATE_GET, + BOOKMARKMANAGERPRIVATE_CUT, + TABS_CAPTUREVISIBLETAB, + MANAGEMENT_SETENABLED, + HISTORY_DELETEALL, + STORAGE_GET, + SOCKET_SETKEEPALIVE, + DOWNLOADS_CANCEL, + BOOKMARKS_CREATE, + BOOKMARKS_UPDATE, + FILEBROWSERPRIVATE_GETDRIVEFILES, + TERMINALPRIVATE_ONTERMINALRESIZE, + DELETED_FILEBROWSERPRIVATE_REQUESTDIRECTORYREFRESH, + BLUETOOTH_GETADAPTERSTATE, + FILEBROWSERPRIVATE_CANCELFILETRANSFERS, + FILEBROWSERPRIVATE_PINDRIVEFILE, + SOCKET_WRITE, + OMNIBOX_SETDEFAULTSUGGESTION, + TTS_SPEAK, + WALLPAPERPRIVATE_RESTOREMINIMIZEDWINDOWS, + BROWSINGDATA_REMOVEHISTORY, + DELETED_FILEBROWSERPRIVATE_ISFULLSCREEN, + AUTOTESTPRIVATE_LOGOUT, + EXPERIMENTAL_HISTORY_GETMOSTVISITED, + BLUETOOTH_DISCONNECT, + BLUETOOTH_SETOUTOFBANDPAIRINGDATA, + BOOKMARKMANAGERPRIVATE_CANPASTE, + AUTOTESTPRIVATE_RESTART, + USB_CLAIMINTERFACE, + MEDIAPLAYERPRIVATE_SETWINDOWHEIGHT, + DELETED_EXPERIMENTAL_PROCESSES_GETPROCESSINFO, + HISTORY_GETVISITS, + SOCKET_BIND, + TABS_MOVE, + SOCKET_DISCONNECT, + FILESYSTEM_GETWRITABLEENTRY, + SYNCFILESYSTEM_REQUESTFILESYSTEM, + COMMANDS_GETALL, + EXPERIMENTAL_DISCOVERY_REMOVESUGGESTION, + VIRTUALKEYBOARDPRIVATE_SENDKEYEVENT, + BOOKMARKMANAGERPRIVATE_GETSUBTREE, + DELETED_EXPERIMENTAL_RLZ_RECORDPRODUCTEVENT, + BOOKMARKS_GETRECENT, + APP_CURRENTWINDOWINTERNAL_SETBOUNDS, + CLOUDPRINTPRIVATE_SETUPCONNECTOR, + SERIAL_SETCONTROLSIGNALS, + DELETED_FILEBROWSERPRIVATE_SETLASTMODIFIED, + IDLE_SETDETECTIONINTERVAL, + FILEBROWSERPRIVATE_GETFILETASKS, + WEBSTOREPRIVATE_GETSTORELOGIN, + SYSTEMPRIVATE_GETINCOGNITOMODEAVAILABILITY, + IDLTEST_SENDARRAYBUFFERVIEW, + SOCKET_SETNODELAY, + APP_CURRENTWINDOWINTERNAL_SHOW, + WEBSTOREPRIVATE_GETBROWSERLOGIN, + EXPERIMENTAL_IDENTITY_GETAUTHTOKEN, + DELETED_SYSTEMINFO_DISPLAY_GETDISPLAYINFO, + BROWSINGDATA_REMOVEPLUGINDATA, + SOCKET_LISTEN, + MEDIAGALLERIES_GETMEDIAFILESYSTEMS, + DOWNLOADS_OPEN, + TABS_EXECUTESCRIPT, + SYNCFILESYSTEM_GETUSAGEANDQUOTA, + INPUTMETHODPRIVATE_GET, + USB_CLOSEDEVICE, + TTS_STOP, + DELETED_SERIAL_GETPORTS, + DELETED_FILEBROWSERPRIVATE_CLEARDRIVECACHE, + SERIAL_GETCONTROLSIGNALS, + DEVELOPERPRIVATE_ENABLE, + FILEBROWSERPRIVATE_GETDRIVEFILEPROPERTIES, + USB_FINDDEVICES, + BOOKMARKMANAGERPRIVATE_DROP, + DELETED_FILEBROWSERPRIVATE_GETFILETRANSFERS, + INPUT_IME_SETMENUITEMS, + BOOKMARKS_EXPORT, + HISTORY_SEARCH, + TTSENGINE_SENDTTSEVENT, + EXPERIMENTAL_ACCESSIBILITY_GETALERTSFORTAB, + BOOKMARKS_IMPORT, + SYNCFILESYSTEM_DELETEFILESYSTEM, + DEBUGGER_SENDCOMMAND, + DEBUGGER_DETACH, + METRICSPRIVATE_RECORDSMALLCOUNT, + APP_CURRENTWINDOWINTERNAL_MINIMIZE, + DEVELOPERPRIVATE_AUTOUPDATE, + DNS_RESOLVE, + DELETED_EXPERIMENTAL_SYSTEMINFO_MEMORY_GET, + HISTORY_ADDURL, + TABS_GET, + BROWSERACTION_SETBADGETEXT, + TABS_RELOAD, + WINDOWS_CREATE, + DEVELOPERPRIVATE_LOADUNPACKED, + DELETED_DOWNLOADS_SETDESTINATION, + DELETED_EXPERIMENTAL_PROCESSES_GETPROCESSIDFORTAB, + BOOKMARKS_GETCHILDREN, + BROWSERACTION_GETTITLE, + TERMINALPRIVATE_OPENTERMINALPROCESS, + DELETED_SERIAL_CLOSE, + CONTEXTMENUS_REMOVE, + FILEBROWSERPRIVATE_REQUESTFILESYSTEM, + ECHOPRIVATE_GETREGISTRATIONCODE, + TABS_GETCURRENT, + FONTSETTINGS_CLEARDEFAULTFIXEDFONTSIZE, + MEDIAPLAYERPRIVATE_CLOSEWINDOW, + WEBREQUESTINTERNAL_ADDEVENTLISTENER, + CLOUDPRINTPRIVATE_GETPRINTERS, + STORAGE_SET, + FONTSETTINGS_GETDEFAULTFONTSIZE, + EXTENSION_SETUPDATEURLDATA, + DELETED_SERIAL_WRITE, + IDLE_QUERYSTATE, + DELETED_EXPERIMENTAL_RLZ_GETACCESSPOINTRLZ, + WEBSTOREPRIVATE_SETSTORELOGIN, + PAGEACTIONS_ENABLEFORTAB, + COOKIES_SET, + CONTENTSETTINGS_SET, + CONTEXTMENUS_REMOVEALL, + TABS_INSERTCSS, + WEBREQUEST_HANDLERBEHAVIORCHANGED, + INPUT_IME_SETCURSORPOSITION, + OMNIBOX_SENDSUGGESTIONS, + SYSTEMINDICATOR_ENABLE, + EVENTS_GETRULES, + BOOKMARKMANAGERPRIVATE_COPY, + SOCKET_RECVFROM, + TABS_GETALLINWINDOW, + CONTEXTMENUS_UPDATE, + BOOKMARKS_SEARCH, + EXPERIMENTAL_APP_CLEARALLNOTIFICATIONS, + BLUETOOTH_GETLOCALOUTOFBANDPAIRINGDATA, + SYSTEMPRIVATE_GETUPDATESTATUS, + FONTSETTINGS_CLEARMINIMUMFONTSIZE, + DELETED_FILEBROWSERPRIVATE_GETFILELOCATIONS, + EXPERIMENTAL_DISCOVERY_SUGGEST, + FILEBROWSERPRIVATE_SETDEFAULTTASK, + BROWSERACTION_GETBADGETEXT, + APP_CURRENTWINDOWINTERNAL_HIDE, + SOCKET_CONNECT, + BOOKMARKS_GETSUBTREE, + HISTORY_DELETEURL, + DELETED_EXPERIMENTAL_MEDIAGALLERIES_ASSEMBLEMEDIAFILE, + BOOKMARKMANAGERPRIVATE_STARTDRAG, + BROWSINGDATA_REMOVEPASSWORDS, + DOWNLOADS_DRAG, + INPUT_IME_SETCOMPOSITION, + METRICSPRIVATE_RECORDUSERACTION, + USB_RELEASEINTERFACE, + PAGEACTION_GETPOPUP, + DELETED_SCRIPTBADGE_GETATTENTION, + FONTSETTINGS_GETFONTLIST, + PERMISSIONS_CONTAINS, + DELETED_SCRIPTBADGE_GETPOPUP, + EXPERIMENTAL_ACCESSIBILITY_GETFOCUSEDCONTROL, + DEVELOPERPRIVATE_GETSTRINGS, + METRICSPRIVATE_RECORDMEDIUMCOUNT, + MANAGEMENT_GET, + PERMISSIONS_GETALL, + DOWNLOADS_SHOW, + DELETED_EXPERIMENTAL_RLZ_CLEARPRODUCTSTATE, + TABS_REMOVE, + MANAGEMENT_GETPERMISSIONWARNINGSBYID, + WINDOWS_GET, + FILEBROWSERPRIVATE_EXECUTETASK, + TTS_GETVOICES, + MANAGEMENT_GETALL, + MANAGEMENT_GETPERMISSIONWARNINGSBYMANIFEST, + APP_CURRENTWINDOWINTERNAL_CLEARATTENTION, + AUTOTESTPRIVATE_SHUTDOWN, + FONTSETTINGS_CLEARDEFAULTFONTSIZE, + BOOKMARKS_GETTREE, + FILEBROWSERPRIVATE_SELECTFILES, + RUNTIME_GETBACKGROUNDPAGE, + DELETED_EXPERIMENTAL_RECORD_REPLAYURLS, + WEBSTOREPRIVATE_COMPLETEINSTALL, + DELETED_EXPERIMENTAL_SPEECHINPUT_START, + COOKIES_GETALL, + DOWNLOADS_GETFILEICON, + PAGEACTION_GETTITLE, + BROWSINGDATA_REMOVE, + DELETED_SERIAL_OPEN, + FILESYSTEM_GETDISPLAYPATH, + FILEBROWSERPRIVATE_FORMATVOLUME, + BOOKMARKS_GET, + DELETED_MANAGEDMODEPRIVATE_GET, + ALARMS_CLEAR, + SYNCFILESYSTEM_GETFILESYNCSTATUS, + SOCKET_GETINFO, + WEBSTOREPRIVATE_INSTALLBUNDLE, + BROWSERACTION_ENABLE, + METRICSPRIVATE_RECORDMEDIUMTIME, + PAGEACTION_SETTITLE, + CLOUDPRINTPRIVATE_GETHOSTNAME, + CONTENTSETTINGS_GETRESOURCEIDENTIFIERS, + SOCKET_CREATE, + DEVELOPERPRIVATE_RELOAD, + FILEBROWSERPRIVATE_GETVOLUMEMETADATALIST, + APP_RUNTIME_POSTINTENTRESPONSE, + DELETED_MANAGEDMODEPRIVATE_SETPOLICY, + WEBSTOREPRIVATE_BEGININSTALLWITHMANIFEST3, + WALLPAPERPRIVATE_SETWALLPAPER, + USB_CONTROLTRANSFER, + DELETED_EXPERIMENTAL_SPEECHINPUT_STOP, + USB_BULKTRANSFER, + DELETED_FILEBROWSERPRIVATE_GETVOLUMEMETADATA, + PAGECAPTURE_SAVEASMHTML, + EXTENSION_ISALLOWEDINCOGNITOACCESS, + BROWSINGDATA_REMOVEAPPCACHE, + APP_CURRENTWINDOWINTERNAL_DRAWATTENTION, + METRICSPRIVATE_RECORDCOUNT, + USB_INTERRUPTTRANSFER, + TYPES_CHROMESETTING_CLEAR, + INPUT_IME_COMMITTEXT, + IDLTEST_SENDARRAYBUFFER, + WALLPAPERPRIVATE_SETWALLPAPERIFEXISTS, + SOCKET_ACCEPT, + WEBNAVIGATION_GETFRAME, + EXPERIMENTAL_POWER_RELEASEKEEPAWAKE, + APP_CURRENTWINDOWINTERNAL_SETICON, + PUSHMESSAGING_GETCHANNELID, + EXPERIMENTAL_INFOBARS_SHOW, + INPUT_IME_SETCANDIDATEWINDOWPROPERTIES, + METRICSPRIVATE_RECORDPERCENTAGE, + TYPES_CHROMESETTING_GET, + WINDOWS_GETLASTFOCUSED, + DELETED_MANAGEDMODEPRIVATE_GETPOLICY, + STORAGE_CLEAR, + STORAGE_GETBYTESINUSE, + TABS_QUERY, + PAGEACTION_SETPOPUP, + DEVELOPERPRIVATE_INSPECT, + DOWNLOADS_SEARCH, + FONTSETTINGS_CLEARFONT, + WINDOWS_UPDATE, + BOOKMARKMANAGERPRIVATE_CANOPENNEWWINDOWS, + SERIAL_FLUSH, + BROWSERACTION_SETTITLE, + BOOKMARKMANAGERPRIVATE_CANEDIT, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPER, + BOOKMARKS_REMOVE, + INPUT_IME_SETCANDIDATES, + TERMINALPRIVATE_CLOSETERMINALPROCESS, + HISTORY_DELETERANGE, + IDLTEST_GETARRAYBUFFER, + TERMINALPRIVATE_SENDINPUT, + TABS_HIGHLIGHT, + BLUETOOTH_STARTDISCOVERY, + FILEBROWSERPRIVATE_SELECTFILE, + WINDOWS_GETCURRENT, + DEBUGGER_ATTACH, + WALLPAPERPRIVATE_SAVETHUMBNAIL, + INPUT_IME_KEYEVENTHANDLED, + FONTSETTINGS_SETDEFAULTFONTSIZE, + RUNTIME_REQUESTUPDATECHECK, + PAGEACTION_SETICON, + BROWSERACTION_SETBADGEBACKGROUNDCOLOR, + DEVELOPERPRIVATE_GETITEMSINFO, + BLUETOOTH_STOPDISCOVERY, + COOKIES_REMOVE, + DELETED_EXPERIMENTAL_RLZ_SENDFINANCIALPING, + TABCAPTURE_GETCAPTUREDTABS, + WINDOWS_REMOVE, + WALLPAPERPRIVATE_GETOFFLINEWALLPAPERLIST, + BROWSERACTION_GETBADGEBACKGROUNDCOLOR, + PAGEACTIONS_DISABLEFORTAB, + DEVELOPERPRIVATE_ALLOWFILEACCESS, + FILEBROWSERPRIVATE_REMOVEMOUNT, + BLUETOOTH_CONNECT, + TABCAPTURE_CAPTURE, + NOTIFICATIONS_CREATE, + TABS_DUPLICATE, + BLUETOOTH_WRITE, + PAGEACTION_SHOW, + WALLPAPERPRIVATE_GETTHUMBNAIL, + DOWNLOADS_PAUSE, + PERMISSIONS_REQUEST, + TOPSITES_GET, + BROWSINGDATA_REMOVEDOWNLOADS, + BROWSINGDATA_REMOVELOCALSTORAGE, + FILEBROWSERHANDLERINTERNAL_SELECTFILE, + INPUT_IME_UPDATEMENUITEMS, + FILEBROWSERPRIVATE_GETSTRINGS, + CONTENTSETTINGS_GET, + FONTSETTINGS_SETDEFAULTFIXEDFONTSIZE, + EXPERIMENTAL_APP_NOTIFY, + METRICSPRIVATE_RECORDLONGTIME, + SOCKET_READ, + DELETED_EXPERIMENTAL_PROCESSES_TERMINATE, + METRICSPRIVATE_RECORDTIME, + BOOKMARKMANAGERPRIVATE_GETSTRINGS, + USB_ISOCHRONOUSTRANSFER, + PERMISSIONS_REMOVE, + MANAGEMENT_UNINSTALL, + I18N_GETACCEPTLANGUAGES, + MANAGEMENT_LAUNCHAPP, + INPUT_IME_CLEARCOMPOSITION, + ALARMS_GETALL, + DIAL_DISCOVERNOW, + TYPES_CHROMESETTING_SET, + BROWSERACTION_SETICON, + EXPERIMENTAL_ACCESSIBILITY_SETACCESSIBILITYENABLED, + DELETED_FILEBROWSERPRIVATE_VIEWFILES, + BLUETOOTH_GETSERVICES, + TABS_UPDATE, + BROWSINGDATA_REMOVEFORMDATA, + DELETED_FILEBROWSERPRIVATE_RELOADDRIVE, + ALARMS_GET, + BROWSINGDATA_REMOVEINDEXEDDB, + FILEBROWSERPRIVATE_ADDFILEWATCH, + CONTENTSETTINGS_CLEAR, + FILEBROWSERPRIVATE_GETPREFERENCES, + BOOKMARKMANAGERPRIVATE_PASTE, + FILESYSTEM_ISWRITABLEENTRY, + USB_SETINTERFACEALTERNATESETTING, + FONTSETTINGS_SETMINIMUMFONTSIZE, + BROWSERACTION_GETPOPUP, + SOCKET_DESTROY, + BLUETOOTH_GETDEVICES, + ALARMS_CLEARALL, + FONTSETTINGS_GETDEFAULTFIXEDFONTSIZE, + FILEBROWSERPRIVATE_ZIPSELECTION, + SYSTEMINDICATOR_DISABLE, + DELETED_SCRIPTBADGE_SETPOPUP, + EXTENSION_ISALLOWEDFILESCHEMEACCESS, + EXPERIMENTAL_IDENTITY_LAUNCHWEBAUTHFLOW, + FILEBROWSERPRIVATE_GETDRIVECONNECTIONSTATE, + TABS_DETECTLANGUAGE, + METRICSPRIVATE_RECORDVALUE, + BOOKMARKMANAGERPRIVATE_SORTCHILDREN, + DELETED_SERIAL_READ, + APP_CURRENTWINDOWINTERNAL_MAXIMIZE, + EXPERIMENTAL_DISCOVERY_CLEARALLSUGGESTIONS, + DELETED_MANAGEDMODEPRIVATE_ENTER, + DELETED_FILEBROWSERPRIVATE_TRANSFERFILE, + BROWSERACTION_SETPOPUP, + TABS_GETSELECTED, + FONTSETTINGS_GETFONT, + BLUETOOTH_READ, + WEBREQUESTINTERNAL_EVENTHANDLED, + EVENTS_ADDRULES, + CONTEXTMENUS_CREATE, + MEDIAPLAYERPRIVATE_GETPLAYLIST, + DOWNLOADS_ERASE, + DELETED_EXPERIMENTAL_RECORD_CAPTUREURLS, + TTS_ISSPEAKING, + BOOKMARKS_REMOVETREE, + FILEBROWSERPRIVATE_SEARCHDRIVE, + DELETED_EXPERIMENTAL_SYSTEMINFO_CPU_GET, + FILEBROWSERPRIVATE_SETPREFERENCES, + FONTSETTINGS_SETFONT, + SOCKET_GETNETWORKLIST, + BOOKMARKS_MOVE, + WALLPAPERPRIVATE_MINIMIZEINACTIVEWINDOWS, + STORAGE_REMOVE, + AUTOTESTPRIVATE_LOGINSTATUS, + TABS_CREATE, + FILEBROWSERPRIVATE_CANCELDIALOG, + BROWSINGDATA_REMOVECOOKIES, + FILESYSTEM_CHOOSEENTRY, + MEDIAPLAYERPRIVATE_PLAY, + WEBSTOREPRIVATE_GETWEBGLSTATUS, + SOCKET_SENDTO, + BROWSINGDATA_REMOVEFILESYSTEMS, + WALLPAPERPRIVATE_GETSTRINGS, + BROWSINGDATA_REMOVECACHE, + BOOKMARKMANAGERPRIVATE_RECORDLAUNCH, + BROWSERACTION_DISABLE, + DELETED_EXPERIMENTAL_SPEECHINPUT_ISRECORDING, + APP_WINDOW_CREATE, + RUNTIME_RELOAD, + EXPERIMENTAL_POWER_REQUESTKEEPAWAKE, + SYSTEMINDICATOR_SETICON, + FILEBROWSERPRIVATE_ADDMOUNT, + APP_CURRENTWINDOWINTERNAL_FOCUS, + EVENTS_REMOVERULES, + DOWNLOADS_DOWNLOAD, + WINDOWS_GETALL, + DELETED_FILEBROWSERPRIVATE_TOGGLEFULLSCREEN, + APP_CURRENTWINDOWINTERNAL_RESTORE, + DELETED_WEBSOCKETPROXYPRIVATE_GETPASSPORTFORTCP, + PAGEACTION_HIDE, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_GET, + DOWNLOADS_ACCEPTDANGER, + DELETED_WEBSOCKETPROXYPRIVATE_GETURLFORTCP, + FILEBROWSERPRIVATE_GETSIZESTATS, + DOWNLOADS_RESUME, + COOKIES_GETALLCOOKIESTORES, + MEDIAGALLERIESPRIVATE_ADDGALLERYWATCH, + MEDIAGALLERIESPRIVATE_REMOVEGALLERYWATCH, + WEBVIEW_EXECUTESCRIPT, + NOTIFICATIONS_UPDATE, + NOTIFICATIONS_CLEAR, + DELETED_SESSIONRESTORE_GETRECENTLYCLOSED, + DELETED_SESSIONRESTORE_RESTORE, + MANAGEMENT_UNINSTALLSELF, + ECHOPRIVATE_GETOOBETIMESTAMP, + FILEBROWSERPRIVATE_VALIDATEPATHNAMELENGTH, + BROWSINGDATA_SETTINGS, + WEBSTOREPRIVATE_GETISLAUNCHERENABLED, + NETWORKINGPRIVATE_GETPROPERTIES, + NETWORKINGPRIVATE_GETVISIBLENETWORKS, + NETWORKINGPRIVATE_STARTCONNECT, + NETWORKINGPRIVATE_STARTDISCONNECT, + MEDIAGALLERIESPRIVATE_GETALLGALLERYWATCH, + MEDIAGALLERIESPRIVATE_REMOVEALLGALLERYWATCH, + FILEBROWSERPRIVATE_SEARCHDRIVEMETADATA, + DELETED_ECHOPRIVATE_CHECKALLOWREDEEMOFFERS, + DELETED_MEDIAGALLERIESPRIVATE_EJECTDEVICE, + FILEBROWSERPRIVATE_LOGOUTUSERFORREAUTHENTICATION, + DEVELOPERPRIVATE_CHOOSEPATH, + DEVELOPERPRIVATE_PACKDIRECTORY, + NETWORKINGPRIVATE_VERIFYDESTINATION, + NETWORKINGPRIVATE_VERIFYANDENCRYPTCREDENTIALS, + NETWORKINGPRIVATE_VERIFYANDENCRYPTDATA, + DEVELOPERPRIVATE_RESTART, + DEVELOPERPRIVATE_ALLOWINCOGNITO, + INPUT_IME_DELETESURROUNDINGTEXT, + DELETED_FILEBROWSERPRIVATE_OPENNEWWINDOW, + CLOUDPRINTPRIVATE_GETCLIENTID, + ECHOPRIVATE_GETUSERCONSENT, + SYNCFILESYSTEM_SETCONFLICTRESOLUTIONPOLICY, + SYNCFILESYSTEM_GETCONFLICTRESOLUTIONPOLICY, + NETWORKINGPRIVATE_SETPROPERTIES, + NETWORKINGPRIVATE_GETSTATE, + POWER_REQUESTKEEPAWAKE, + POWER_RELEASEKEEPAWAKE, + WALLPAPERPRIVATE_SETCUSTOMWALLPAPERLAYOUT, + DOWNLOADSINTERNAL_DETERMINEFILENAME, + SYNCFILESYSTEM_GETFILESYNCSTATUSES, + MEDIAGALLERIESPRIVATE_GETHANDLERS, + WALLPAPERPRIVATE_RESETWALLPAPER, + DEVELOPERPRIVATE_PERMISSIONS, + WEBSTOREPRIVATE_ENABLEAPPLAUNCHER, + APP_CURRENTWINDOWINTERNAL_FULLSCREEN, + DEVELOPERPRIVATE_LOADUNPACKEDCROS, + NETWORKINGPRIVATE_REQUESTNETWORKSCAN, + ENTERPRISE_PLATFORMKEYSPRIVATE_CHALLENGEMACHINEKEY, + ENTERPRISE_PLATFORMKEYSPRIVATE_CHALLENGEUSERKEY, + DEVELOPERPRIVATE_LOADPROJECTTOSYNCFS, + DEVELOPERPRIVATE_GETPROJECTSINFO, + DEVELOPERPRIVATE_LOADPROJECT, + COMMANDLINEPRIVATE_HASSWITCH, + NETWORKINGPRIVATE_GETMANAGEDPROPERTIES, + LOCATION_WATCHLOCATION, + LOCATION_CLEARWATCH, + BLUETOOTH_ADDPROFILE, + BLUETOOTH_REMOVEPROFILE, + BLUETOOTH_GETPROFILES, + EXPERIMENTAL_IDENTITY_REMOVECACHEDAUTHTOKEN, + AUDIO_GETINFO, + AUDIO_SETACTIVEDEVICES, + AUDIO_SETPROPERTIES, + USB_RESETDEVICE, + SOCKET_MULTICAST_JOIN_GROUP, + SOCKET_MULTICAST_LEAVE_GROUP, + SOCKET_MULTICAST_SET_TIME_TO_LIVE, + SOCKET_MULTICAST_SET_LOOPBACK_MODE, + SOCKET_MULTICAST_GET_JOINED_GROUPS, + EXPERIMENTAL_ACCESSIBILITY_SETNATIVEACCESSIBILITYENABLED, + RUNTIME_GETPLATFORMINFO, + WEBVIEW_INSERTCSS, + METRICSPRIVATE_GETISCRASHRECORDINGENABLED, + IDENTITYPRIVATE_GETRESOURCES, + NOTIFICATIONS_GET_ALL, + USB_LISTINTERFACES, + FILESYSTEM_RETAINENTRY, + FILESYSTEM_ISRESTORABLE, + FILESYSTEM_RESTOREENTRY, + RUNTIME_SETUNINSTALLURL, + INPUTMETHODPRIVATE_STARTIME, + MUSICMANAGERPRIVATE_GETDEVICEID, + TTS_PAUSE, + TTS_RESUME, + DELETED_SYSTEMINFO_CPU_GET, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_ADDWATCH, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_REMOVEWATCH, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_GETALLWATCH, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_REMOVEALLWATCH, + DELETED_SYSTEMINFO_MEMORY_GET, + ACTIVITYLOGPRIVATE_GETEXTENSIONACTIVITIES, + RUNTIME_GETPACKAGEDIRECTORYENTRY, + DELETED_SYSTEMINFO_DISPLAY_SETDISPLAYPROPERTIES, + FEEDBACKPRIVATE_GETUSEREMAIL, + FEEDBACKPRIVATE_GETSYSTEMINFORMATION, + FEEDBACKPRIVATE_SENDFEEDBACK, + VIRTUALKEYBOARDPRIVATE_INSERTTEXT, + DIAGNOSTICS_SENDPACKET, + METRICSPRIVATE_GETFIELDTRIAL, + FILEBROWSERPRIVATE_ZOOM, + WEBVIEW_GO, + WEBSTOREPRIVATE_ISININCOGNITOMODEFUNCTION, + FILEBROWSERPRIVATE_REQUESTACCESSTOKEN, + WEBVIEW_STOP, + WEBVIEW_RELOAD, + WEBVIEW_TERMINATE, + TYPES_PRIVATE_CHROMEDIRECTSETTING_GET, + TYPES_PRIVATE_CHROMEDIRECTSETTING_SET, + TYPES_PRIVATE_CHROMEDIRECTSETTING_CLEAR, + DELETED_EXPERIMENTAL_SYSTEMINFO_STORAGE_EJECTDEVICE, + SYSTEM_CPU_GETINFO, + BOOKMARKMANAGERPRIVATE_REMOVETREES, + SYSTEM_DISPLAY_GETINFO, + SYSTEM_DISPLAY_SETDISPLAYPROPERTIES, + SYSTEM_MEMORY_GETINFO, + FILEBROWSERPRIVATE_GETSHAREURL, + SYSTEM_STORAGE_GETINFO, + SYSTEM_STORAGE_EJECTDEVICE, + DELETED_SYSTEM_STORAGE_ADDAVAILABLECAPACITYWATCH, + DELETED_SYSTEM_STORAGE_REMOVEAVAILABLECAPACITYWATCH, + DELETED_SYSTEM_STORAGE_GETALLAVAILABLECAPACITYWATCHES, + DELETED_SYSTEM_STORAGE_REMOVEALLAVAILABLECAPACITYWATCHES, + DOWNLOADS_REMOVEFILE, + DOWNLOADS_SHOWDEFAULTFOLDER, + INFOBARS_SHOW, + DOWNLOADS_SETSHELFENABLED, + IMAGEWRITER_WRITEFROMURL, + IMAGEWRITER_WRITEFROMFILE, + IMAGEWRITER_CANCELWRITE, + IMAGEWRITER_DESTROYPARTITIONS, + FEEDBACKPRIVATE_GETSTRINGS, + LOGPRIVATE_GETHISTORICAL, + VIRTUALKEYBOARDPRIVATE_MOVECURSOR, + METRICSPRIVATE_GETVARIATIONPARAMS, + WEBVIEW_SETPERMISSION, + DESKTOPCAPTURE_CHOOSEDESKTOPMEDIA, + APP_CURRENTWINDOWINTERNAL_SETSHAPE, + PROCESSES_GETPROCESSINFO, + PROCESSES_GETPROCESSIDFORTAB, + PROCESSES_TERMINATE, + SOCKETS_UDP_CREATE, + SOCKETS_UDP_UPDATE, + SOCKETS_UDP_BIND, + SOCKETS_UDP_SEND, + SOCKETS_UDP_CLOSE, + SOCKETS_UDP_GETINFO, + SOCKETS_UDP_GETSOCKETS, + SOCKETS_UDP_JOINGROUP, + SOCKETS_UDP_LEAVEGROUP, + SOCKETS_UDP_SETMULTICASTTIMETOLIVE, + SOCKETS_UDP_SETMULTICASTLOOPBACKMODE, + SOCKETS_UDP_GETJOINEDGROUPS, + SIGNED_IN_DEVICES_GET, + AUTOTESTPRIVATE_SIMULATEASANMEMORYBUG, + WEBVIEW_CLEARDATA, + SESSIONS_GETRECENTLYCLOSED, + SESSIONS_GETDEVICES, + SESSIONS_RESTORE, + SYNCFILESYSTEM_GETSERVICESTATUS, + ECHOPRIVATE_SETOFFERINFO, + ECHOPRIVATE_GETOFFERINFO, + DEVELOPERPRIVATE_ISPROFILEMANAGED, + FILEBROWSERPRIVATE_INSTALLWEBSTOREITEM, + FILEBROWSERPRIVATE_STARTCOPY, + FILEBROWSERPRIVATE_CANCELCOPY, + NETWORKINGPRIVATE_CREATENETWORK, + BRAILLEDISPLAYPRIVATE_GETDISPLAYSTATE, + BRAILLEDISPLAYPRIVATE_WRITEDOTS, + USB_GETDEVICES, + USB_REQUESTACCESS, + USB_OPENDEVICE, + ACTIVITYLOGPRIVATE_DELETEDATABASE, + ACTIVITYLOGPRIVATE_DELETEURLS, + FILEBROWSERPRIVATE_REQUESTWEBSTOREACCESSTOKEN, + IMAGEWRITER_LISTREMOVABLESTORAGEDEVICES, + WALLPAPER_SETWALLPAPER, + VIRTUALKEYBOARDPRIVATE_HIDEKEYBOARD, + AUTOTESTPRIVATE_LOCKSCREEN, + WEBRTCLOGGINGPRIVATE_SETMETADATA, + WEBRTCLOGGINGPRIVATE_START, + WEBRTCLOGGINGPRIVATE_SETUPLOADONRENDERCLOSE, + WEBRTCLOGGINGPRIVATE_STOP, + WEBRTCLOGGINGPRIVATE_UPLOAD, + WEBRTCLOGGINGPRIVATE_DISCARD, + WEBVIEW_OVERRIDEUSERAGENT, + PRINCIPALSPRIVATE_SHOWAVATARBUBBLE, + PRINCIPALSPRIVATE_SIGNOUT, + CAST_CHANNEL_OPEN, + CAST_CHANNEL_SEND, + CAST_CHANNEL_CLOSE, + RUNTIME_RESTART, + DESKTOPCAPTURE_CANCELCHOOSEDESKTOPMEDIA, + APP_CURRENTWINDOWINTERNAL_SETALWAYSONTOP, + SOCKETS_TCP_CREATE, + SOCKETS_TCP_UPDATE, + SOCKETS_TCP_SETPAUSED, + SOCKETS_TCP_SETKEEPALIVE, + SOCKETS_TCP_SETNODELAY, + SOCKETS_TCP_CONNECT, + SOCKETS_TCP_DISCONNECT, + SOCKETS_TCP_SEND, + SOCKETS_TCP_CLOSE, + SOCKETS_TCP_GETINFO, + SOCKETS_TCP_GETSOCKETS, + NETWORKINGPRIVATE_GETENABLEDNETWORKTYPES, + NETWORKINGPRIVATE_ENABLENETWORKTYPE, + NETWORKINGPRIVATE_DISABLENETWORKTYPE, + SOCKETS_TCP_SERVER_CREATE, + SOCKETS_TCP_SERVER_UPDATE, + SOCKETS_TCP_SERVER_SETPAUSED, + SOCKETS_TCP_SERVER_LISTEN, + SOCKETS_TCP_SERVER_DISCONNECT, + SOCKETS_TCP_SERVER_CLOSE, + SOCKETS_TCP_SERVER_GETINFO, + SOCKETS_TCP_SERVER_GETSOCKETS, + SYSTEM_STORAGE_GETAVAILABLECAPACITY, + BROWSERACTION_OPEN_POPUP, + WEBRTC_AUDIO_PRIVATE_GET_SINKS, + WEBRTC_AUDIO_PRIVATE_GET_ACTIVE_SINK, + WEBRTC_AUDIO_PRIVATE_SET_ACTIVE_SINK, + WEBRTC_AUDIO_PRIVATE_GET_ASSOCIATED_SINK, + VIRTUALKEYBOARDPRIVATE_KEYBOARDLOADED, + APP_CURRENTWINDOWINTERNAL_SETMINWIDTH, + APP_CURRENTWINDOWINTERNAL_SETMINHEIGHT, + APP_CURRENTWINDOWINTERNAL_SETMAXWIDTH, + APP_CURRENTWINDOWINTERNAL_SETMAXHEIGHT, + SYSTEMPRIVATE_GETAPIKEY, + CHROMEOSINFOPRIVATE_SET, + BOOKMARKMANAGERPRIVATE_GETMETAINFO, + BOOKMARKMANAGERPRIVATE_SETMETAINFO, + FILESYSTEMPROVIDER_MOUNT, + AUTOTESTPRIVATE_GETEXTENSIONSINFO, + SCREENLOCKPRIVATE_GETLOCKED, + SCREENLOCKPRIVATE_SETLOCKED, + SCREENLOCKPRIVATE_SHOWMESSAGE, + FEEDBACKPRIVATE_GETHISTOGRAMS, + SYSTEM_NETWORK_GETNETWORKINTERFACES, + SERIAL_GETDEVICES, + SERIAL_UPDATE, + SERIAL_SETPAUSED, + SERIAL_GETINFO, + SERIAL_GETCONNECTIONS, + SERIAL_SEND, + GCM_REGISTER, + GCM_SEND, + SERIAL_CONNECT, + SERIAL_DISCONNECT, + MEDIAGALLERIES_GETALLMEDIAFILESYSTEMMETADATA, + FIRSTRUNPRIVATE_GETLOCALIZEDSTRINGS, + FIRSTRUNPRIVATE_LAUNCHTUTORIAL, + SOCKETS_UDP_SETPAUSED, + WEBVIEW_CAPTUREVISIBLEREGION, + MEDIAGALLERIES_GETMETADATA, + INPUT_IME_SENDKEYEVENTS, + VIRTUALKEYBOARDPRIVATE_LOCKKEYBOARD, + SCREENLOCKPRIVATE_SHOWBUTTON, + INPUT_IME_HIDEINPUTVIEW, + BOOKMARKMANAGERPRIVATE_UNDO, + BOOKMARKMANAGERPRIVATE_REDO, + BOOKMARKMANAGERPRIVATE_UNDOINFO, + BOOKMARKMANAGERPRIVATE_REDOINFO, + MEDIAGALLERIES_ADDUSERSELECTEDFOLDER, + PREFERENCESPRIVATE_GETSYNCCATEGORIESWITHOUTPASSPHRASE, + READINGLISTPRIVATE_ADDENTRY, + READINGLISTPRIVATE_REMOVEENTRY, + READINGLISTPRIVATE_GETENTRIES, + MEDIAGALLERIES_STARTMEDIASCAN, + MEDIAGALLERIES_CANCELMEDIASCAN, + MEDIAGALLERIES_ADDSCANRESULTS, + LOGPRIVATE_STARTNETINTERNALSWATCH, + LOGPRIVATE_STOPNETINTERNALSWATCH, + FILEBROWSERPRIVATE_GETPROFILES, + FILEBROWSERPRIVATE_VISITDESKTOP, + VIRTUALKEYBOARDPRIVATE_GETKEYBOARDCONFIG, + HID_GETDEVICES, + HID_CONNECT, + HID_DISCONNECT, + HID_RECEIVE, + HID_SEND, + HID_RECEIVEFEATUREREPORT, + HID_SENDFEATUREREPORT, + HOTWORDPRIVATE_SETENABLED, + HOTWORDPRIVATE_GETSTATUS, + APP_CURRENTWINDOWINTERNAL_SETBADGEICON, + APP_CURRENTWINDOWINTERNAL_CLEARBADGE, + WEBVIEW_SETZOOM, + WEBVIEW_GETZOOM, + DEVELOPERPRIVATE_REQUESTFILESOURCE, + DEVELOPERPRIVATE_OPENDEVTOOLS, + ACTIVITYLOGPRIVATE_DELETEACTIVITIES, + NETWORKINGPRIVATE_SETWIFITDLSENABLEDSTATE, + NETWORKINGPRIVATE_GETWIFITDLSSTATUS, + SCREENLOCKPRIVATE_HIDEBUTTON, + SCREENLOCKPRIVATE_SETAUTHTYPE, + SCREENLOCKPRIVATE_GETAUTHTYPE, + SCREENLOCKPRIVATE_ACCEPTAUTHATTEMPT, + WEBVIEW_FIND, + WEBVIEW_STOPFINDING, + WEBVIEW_CONTEXTMENUSCREATE, + WEBVIEW_CONTEXTMENUSUPDATE, + WEBVIEW_CONTEXTMENUSREMOVE, + WEBVIEW_CONTEXTMENUSREMOVEALL, + // Last entry: Add new entries above and ensure to update + // tools/metrics/histograms/histograms/histograms.xml. + ENUM_BOUNDARY +}; + +} // namespace functions +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_HISTOGRAM_VALUE_H_ |