1# Copyright 2017 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import os
6import tempfile
7
8
9HTML_TEMPLATE = """<!DOCTYPE html>
10    <html>
11        <body id="body">
12            <h1>{title}</h1>
13            <p>Status: <span id="status">not-started</span></p>
14            {scripts}
15        </body>
16    </html>
17    """
18
19
20def generate_test_html(title, *scripts):
21    """
22    Generates HTML contents for WebRTC tests.
23
24    @param title: The title of the page.
25    @param scripts: Paths to the javascript files to include.
26    @returns HTML contents.
27    """
28    script_tag_list = [
29        '<script src="{}"></script>'.format(script)
30        for script in scripts
31    ]
32    script_tags = '\n'.join(script_tag_list)
33    return HTML_TEMPLATE.format(title=title, scripts=script_tags)
34
35
36def get_common_script_path(script):
37    """
38    Gets the file path to a common script.
39
40    @param script: The file name of the script, e.g. 'foo.js'
41    @returns The absolute path to the script.
42    """
43    return os.path.join(
44            os.path.dirname(__file__), 'webrtc_scripts', script)
45
46
47def create_temp_html_file(title, tmpdir, *scripts):
48    """
49    Creates a temporary file with HTML contents for WebRTC tests.
50
51    @param title: The title of the page.
52    @param tmpdir: Directory to put the temporary file.
53    @param scripts: Paths to the javascript files to load.
54    @returns The file object containing the HTML.
55    """
56    html = generate_test_html(
57            title, *scripts)
58    html_file = tempfile.NamedTemporaryFile(
59            suffix = '.html', dir = tmpdir, delete = False)
60    html_file.write(html)
61    html_file.close()
62    return html_file
63
64