| Index: tools/telemetry/third_party/webpagereplay/script_injector.py
|
| diff --git a/tools/telemetry/third_party/webpagereplay/script_injector.py b/tools/telemetry/third_party/webpagereplay/script_injector.py
|
| deleted file mode 100644
|
| index 6899c9dd3c1aa29fe667cb0f4c37eea9124fe23d..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/webpagereplay/script_injector.py
|
| +++ /dev/null
|
| @@ -1,89 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2013 Google Inc. All Rights Reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -
|
| -"""Inject javascript into html page source code."""
|
| -
|
| -import logging
|
| -import os
|
| -import re
|
| -import util
|
| -
|
| -DOCTYPE_RE = re.compile(r'^.{,256}?(<!--.*-->)?.{,256}?<!doctype html>',
|
| - re.IGNORECASE | re.DOTALL)
|
| -HTML_RE = re.compile(r'^.{,256}?(<!--.*-->)?.{,256}?<html.*?>',
|
| - re.IGNORECASE | re.DOTALL)
|
| -HEAD_RE = re.compile(r'^.{,256}?(<!--.*-->)?.{,256}?<head.*?>',
|
| - re.IGNORECASE | re.DOTALL)
|
| -
|
| -
|
| -def GetInjectScript(scripts):
|
| - """Loads |scripts| from disk and returns a string of their content."""
|
| - lines = []
|
| - if scripts:
|
| - if not isinstance(scripts, list):
|
| - scripts = scripts.split(',')
|
| - for script in scripts:
|
| - if os.path.exists(script):
|
| - with open(script) as f:
|
| - lines.extend(f.read())
|
| - elif util.resource_exists(script):
|
| - lines.extend(util.resource_string(script))
|
| - else:
|
| - raise Exception('Script does not exist: %s', script)
|
| -
|
| - def MinifyScript(script):
|
| - """Remove C-style comments and line breaks from script.
|
| - Note: statements must be ';' terminated, and not depending on newline"""
|
| - # Regex adapted from http://ostermiller.org/findcomment.html.
|
| - MULTILINE_COMMENT_RE = re.compile(r'/\*.*?\*/', re.DOTALL | re.MULTILINE)
|
| - SINGLELINE_COMMENT_RE = re.compile(r'//.*', re.MULTILINE)
|
| - # Remove C-style comments from JS.
|
| - script = re.sub(MULTILINE_COMMENT_RE, '', script)
|
| - script = re.sub(SINGLELINE_COMMENT_RE, '', script)
|
| - # Remove line breaks.
|
| - script = script.translate(None, '\r\n')
|
| - return script
|
| -
|
| - return MinifyScript(''.join(lines))
|
| -
|
| -
|
| -def InjectScript(content, content_type, script_to_inject):
|
| - """Inject |script_to_inject| into |content| if |content_type| is 'text/html'.
|
| -
|
| - Inject |script_to_inject| into |content| immediately after <head>, <html> or
|
| - <!doctype html>, if one of them is found. Otherwise, inject at the beginning.
|
| -
|
| - Returns:
|
| - content, already_injected
|
| - |content| is the new content if script is injected, otherwise the original.
|
| - |already_injected| indicates if |script_to_inject| is already in |content|.
|
| - """
|
| - already_injected = False
|
| - if content_type and content_type == 'text/html':
|
| - already_injected = not content or script_to_inject in content
|
| - if not already_injected:
|
| - def InsertScriptAfter(matchobj):
|
| - return '%s<script>%s</script>' % (matchobj.group(0), script_to_inject)
|
| -
|
| - content, is_injected = HEAD_RE.subn(InsertScriptAfter, content, 1)
|
| - if not is_injected:
|
| - content, is_injected = HTML_RE.subn(InsertScriptAfter, content, 1)
|
| - if not is_injected:
|
| - content, is_injected = DOCTYPE_RE.subn(InsertScriptAfter, content, 1)
|
| - if not is_injected:
|
| - content = '<script>%s</script>%s' % (script_to_inject, content)
|
| - logging.warning('Inject at the very beginning, because no tag of '
|
| - '<head>, <html> or <!doctype html> is found.')
|
| - return content, already_injected
|
|
|