HTMLBaseElement::href changed to accept TrustedTypes

Changed implementation of setHref(), older version is abandoned.
Added href() getter that accepts URLString as an argument.

Bug: 739170
Change-Id: I7703c1a33f037a912f1a105d8c79ef8fe5b4a289
Reviewed-on: https://chromium-review.googlesource.com/1136544
Reviewed-by: Mike West <mkwst@chromium.org>
Commit-Queue: Maja Kabus <kabusm@google.com>
Cr-Commit-Position: refs/heads/master@{#575232}
diff --git a/trusted-types/HTMLBaseElement-href.tentative.html b/trusted-types/HTMLBaseElement-href.tentative.html
new file mode 100644
index 0000000..322d740
--- /dev/null
+++ b/trusted-types/HTMLBaseElement-href.tentative.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="support/helper.js"></script>
+
+  <script>
+    //helper function for the tests
+    function testHref(str, url) {
+      var base = document.createElement('base');
+      base.href = url;
+      assert_equals(base.href, str);
+    }
+
+    test(t => {
+      testHref(URLS.safe, TrustedURL.create(URLS.safe));
+    }, "base.href = URLS.safe, TrustedURL.create");
+
+    test(t => {
+      testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe));
+    }, "base.href = URLS.safe, TrustedURL.unsafelyCreate");
+  </script>
+</head>
diff --git a/trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html b/trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html
new file mode 100644
index 0000000..88aeb5b
--- /dev/null
+++ b/trusted-types/block-string-assignment-to-HTMLBaseElement-href.tentative.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="support/helper.js"></script>
+
+  <meta http-equiv="Content-Security-Policy" content="require-trusted-types">
+
+  <script>
+    //helper function for the tests
+    function testHref(str, url) {
+      var base = document.createElement('base');
+      base.href = url;
+      assert_equals(base.href, str);
+    }
+
+    //URL assignments do not throw.
+    test(t => {
+      testHref(URLS.safe, TrustedURL.create(URLS.safe));
+    }, "base.href = URLS.safe, TrustedURL.create");
+
+    test(t => {
+      testHref(URLS.safe, TrustedURL.unsafelyCreate(URLS.safe));
+    }, "base.href = URLS.safe, TrustedURL.unsafelyCreate");
+
+    // String assignments throw.
+    test(t => {
+      var base = document.createElement('base');
+      assert_throws(new TypeError(), _ => {
+        base.href = "A string";
+      });
+    }, "`base.href = string` throws");
+
+    //Null assignment throws.
+    test(t => {
+      var base = document.createElement('base');
+      assert_throws(new TypeError(), _ => {
+        base.href = null;
+      });
+    }, "`base.href = null` throws");
+  </script>
+</head>