summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 19:49:05 +0000
committerahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-25 19:49:05 +0000
commit8a920cf89a4465a56c759d335d9d58d7864b851d (patch)
treeb9c44d8bda250e82de19a0de58945be8b4f4c2c5 /extensions
parentc83c352d015625fae38a78aaad9a0861e9bbef03 (diff)
downloadchromium_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.py300
-rwxr-xr-xextensions/browser/PRESUBMIT_test.py236
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_1.txt35
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_10.txt29
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_11.txt32
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_2.txt33
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_3.txt34
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_4.txt5
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_5.txt5
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_6.txt9
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_7.txt40
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_8.txt35
-rw-r--r--extensions/browser/PRESUBMIT_test_new_file_9.txt38
-rw-r--r--extensions/browser/PRESUBMIT_test_old_file.txt34
-rw-r--r--extensions/common/permissions/PRESUBMIT.py32
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()
+