# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'scunningham'
NAME = 'policy_JavaScriptBlockedForUrls'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verify effects of JavaScriptBlockedForUrls policy on client behavior.

This test verifies the effect of the JavaScriptBlockedForUrls user policy on
Chrome OS client behavior when user policy DefaultJavaScriptSetting=1, meaning
allow JavaScript on all pages except for those in JavaScriptBlockedForUrls.

It exercises a range of policy values using four unique named test cases:
NotSet_Allow, SingleUrl_Block, MultipleUrls_Allow, and MultipleUrls_Block.
See the test file for a full description of what each test case does.

In general, a test shall pass if the browser blocks JavaScript execution only
on a test page with a URL that matches one or more of the URL patterns listed
in JavaScriptBlockedForUrls. A test shall fail if the browser allows execution
on a page where it should be blocked, or blocks execution on a page where it
should be allowed.

'''

args_dict = utils.args_to_dict(args)

job.run_test('policy_JavaScriptBlockedForUrls', **args_dict)
