diff options
author | ahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-25 19:49:05 +0000 |
---|---|---|
committer | ahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-25 19:49:05 +0000 |
commit | 8a920cf89a4465a56c759d335d9d58d7864b851d (patch) | |
tree | b9c44d8bda250e82de19a0de58945be8b4f4c2c5 /extensions | |
parent | c83c352d015625fae38a78aaad9a0861e9bbef03 (diff) | |
download | chromium_src-8a920cf89a4465a56c759d335d9d58d7864b851d.zip chromium_src-8a920cf89a4465a56c759d335d9d58d7864b851d.tar.gz chromium_src-8a920cf89a4465a56c759d335d9d58d7864b851d.tar.bz2 |
Add presubmit check and automatic update script for ExtensionPermission enum.
BUG=338781
Review URL: https://codereview.chromium.org/170233008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259302 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/PRESUBMIT.py | 300 | ||||
-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/common/permissions/PRESUBMIT.py | 32 |
15 files changed, 49 insertions, 848 deletions
diff --git a/extensions/browser/PRESUBMIT.py b/extensions/browser/PRESUBMIT.py index 29a709b..659c176 100644 --- a/extensions/browser/PRESUBMIT.py +++ b/extensions/browser/PRESUBMIT.py @@ -8,6 +8,8 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details on the presubmit API built into gcl. """ +import sys + def GetPreferredTryMasters(project, change): return { 'tryserver.chromium': { @@ -15,294 +17,26 @@ def GetPreferredTryMasters(project, change): } } -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 _CreateHistogramValueChecker(input_api, output_api): + original_sys_path = sys.path - 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()) + try: + sys.path.append(input_api.os_path.join( + input_api.PresubmitLocalPath(), '..', '..', 'tools', + 'strict_enum_value_checker')) + from strict_enum_value_checker import StrictEnumValueChecker + finally: + sys.path = original_sys_path - 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 + return StrictEnumValueChecker(input_api, output_api, + start_marker='enum HistogramValue {', end_marker=' // Last entry:', + path='extensions/browser/extension_function_histogram_value.h') def CheckChangeOnUpload(input_api, output_api): results = [] - results += HistogramValueChecker(input_api, output_api).Run() + results += _CreateHistogramValueChecker(input_api, output_api).Run() results += input_api.canned_checks.CheckPatchFormatted(input_api, output_api) return results +def CheckChangeOnCommit(input_api, output_api): + return _CreateHistogramValueChecker(input_api, output_api).Run() diff --git a/extensions/browser/PRESUBMIT_test.py b/extensions/browser/PRESUBMIT_test.py deleted file mode 100755 index 99cabf5..0000000 --- a/extensions/browser/PRESUBMIT_test.py +++ /dev/null @@ -1,236 +0,0 @@ -#!/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 deleted file mode 100644 index cf894a7..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_1.txt +++ /dev/null @@ -1,35 +0,0 @@ -// 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 deleted file mode 100644 index 745b130..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_10.txt +++ /dev/null @@ -1,29 +0,0 @@ -// 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 deleted file mode 100644 index d02dd03..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_11.txt +++ /dev/null @@ -1,32 +0,0 @@ -// 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 deleted file mode 100644 index e242545..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_2.txt +++ /dev/null @@ -1,33 +0,0 @@ -// 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 deleted file mode 100644 index 3e18f29b..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_3.txt +++ /dev/null @@ -1,34 +0,0 @@ -// 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 deleted file mode 100644 index 8bab558..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_4.txt +++ /dev/null @@ -1,5 +0,0 @@ -// 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 deleted file mode 100644 index 5c75baa..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_5.txt +++ /dev/null @@ -1,5 +0,0 @@ - -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 deleted file mode 100644 index d5d847b..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_6.txt +++ /dev/null @@ -1,9 +0,0 @@ -// 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 deleted file mode 100644 index f928b71..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_7.txt +++ /dev/null @@ -1,40 +0,0 @@ -// 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 deleted file mode 100644 index 8142053..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_8.txt +++ /dev/null @@ -1,35 +0,0 @@ -// 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 deleted file mode 100644 index 75d8cce..0000000 --- a/extensions/browser/PRESUBMIT_test_new_file_9.txt +++ /dev/null @@ -1,38 +0,0 @@ -// 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 deleted file mode 100644 index 51cd734..0000000 --- a/extensions/browser/PRESUBMIT_test_old_file.txt +++ /dev/null @@ -1,34 +0,0 @@ -// 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/common/permissions/PRESUBMIT.py b/extensions/common/permissions/PRESUBMIT.py new file mode 100644 index 0000000..1e059bd --- /dev/null +++ b/extensions/common/permissions/PRESUBMIT.py @@ -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. + +"""Chromium presubmit script for src/extensions/common/permissions. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into gcl. +""" +import sys + +def GetPreferredTrySlaves(): + return ['linux_chromeos'] + +def _CreatePermissionMessageEnumChecker(input_api, output_api): + original_sys_path = sys.path + + try: + sys.path.append(input_api.os_path.join( + input_api.PresubmitLocalPath(), '..', '..', '..', 'tools', + 'strict_enum_value_checker')) + from strict_enum_value_checker import StrictEnumValueChecker + finally: + sys.path = original_sys_path + + return StrictEnumValueChecker(input_api, output_api, + start_marker='enum ID {', end_marker=' kEnumBoundary', + path='extensions/common/permissions/permission_message.h') + +def CheckChangeOnUpload(input_api, output_api): + return _CreatePermissionMessageEnumChecker(input_api, output_api).Run() + |