parameters: (self, good_revision, bad_revision)
return_statement: return None
docstring: Checks whether a given revision is bisectable.
  
      Checks for following:
      1. Non-bisectable revisions for android bots (refer to crbug.com/385324).
      2. Non-bisectable revisions for Windows bots (refer to crbug.com/405274).
  
      Args:
        good_revision: Known good revision.
        bad_revision: Known bad revision.
  
      Returns:
        A dictionary indicating the result. If revision is not bisectable,
        this will contain the field "error", otherwise None.
docstring_summary: Checks whether a given revision is bisectable.
docstring_tokens: Checks whether a given revision is bisectable .
function: def CanPerformBisect(self, good_revision, bad_revision):
      """Checks whether a given revision is bisectable.
  
      Checks for following:
      1. Non-bisectable revisions for android bots (refer to crbug.com/385324).
      2. Non-bisectable revisions for Windows bots (refer to crbug.com/405274).
  
      Args:
        good_revision: Known good revision.
        bad_revision: Known bad revision.
  
      Returns:
        A dictionary indicating the result. If revision is not bisectable,
        this will contain the field "error", otherwise None.
      """
      if self.opts.target_platform == 'android':
        good_revision = source_control.GetCommitPosition(good_revision)
        if (bisect_utils.IsStringInt(good_revision)
            and good_revision < 265549):
          return {'error': (
              'Bisect cannot continue for the given revision range.\n'
              'It is impossible to bisect Android regressions '
              'prior to r265549, which allows the bisect bot to '
              'rely on Telemetry to do apk installation of the most recently '
              'built local ChromePublic (refer to crbug.com/385324).\n'
              'Please try bisecting revisions greater than or equal to r265549.')}
  
      if bisect_utils.IsWindowsHost():
        good_revision = source_control.GetCommitPosition(good_revision)
        bad_revision = source_control.GetCommitPosition(bad_revision)
        if (bisect_utils.IsStringInt(good_revision) and
            bisect_utils.IsStringInt(bad_revision)):
          if (289987 <= good_revision < 290716 or
              289987 <= bad_revision < 290716):
            return {'error': ('Oops! Revision between r289987 and r290716 are '
                              'marked as dead zone for Windows due to '
                              'crbug.com/405274. Please try another range.')}
  
      return None
function_tokens: def CanPerformBisect ( self , good_revision , bad_revision ) : if self . opts . target_platform == 'android' : good_revision = source_control . GetCommitPosition ( good_revision ) if ( bisect_utils . IsStringInt ( good_revision ) and good_revision < 265549 ) : return { 'error' : ( 'Bisect cannot continue for the given revision range.\n' 'It is impossible to bisect Android regressions ' 'prior to r265549, which allows the bisect bot to ' 'rely on Telemetry to do apk installation of the most recently ' 'built local ChromePublic (refer to crbug.com/385324).\n' 'Please try bisecting revisions greater than or equal to r265549.' ) } if bisect_utils . IsWindowsHost ( ) : good_revision = source_control . GetCommitPosition ( good_revision ) bad_revision = source_control . GetCommitPosition ( bad_revision ) if ( bisect_utils . IsStringInt ( good_revision ) and bisect_utils . IsStringInt ( bad_revision ) ) : if ( 289987 <= good_revision < 290716 or 289987 <= bad_revision < 290716 ) : return { 'error' : ( 'Oops! Revision between r289987 and r290716 are ' 'marked as dead zone for Windows due to ' 'crbug.com/405274. Please try another range.' ) } return None