summaryrefslogtreecommitdiffstats
path: root/chrome/browser/resources/net_internals/hstsview.js
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/resources/net_internals/hstsview.js')
-rw-r--r--chrome/browser/resources/net_internals/hstsview.js118
1 files changed, 118 insertions, 0 deletions
diff --git a/chrome/browser/resources/net_internals/hstsview.js b/chrome/browser/resources/net_internals/hstsview.js
new file mode 100644
index 0000000..1194a7a
--- /dev/null
+++ b/chrome/browser/resources/net_internals/hstsview.js
@@ -0,0 +1,118 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * HSTS is HTTPS Strict Transport Security: a way for sites to elect to always
+ * use HTTPS. See http://dev.chromium.org/sts
+ *
+ * This UI allows a user to query and update the browser's list of HSTS domains.
+
+ * @constructor
+ */
+function HSTSView(mainBoxId, queryInputId, formId, queryOutputDivId,
+ addInputId, addFormId, addCheckId,
+ deleteInputId, deleteFormId) {
+ DivView.call(this, mainBoxId);
+
+ this.queryInput_ = document.getElementById(queryInputId);
+ this.addCheck_ = document.getElementById(addCheckId);
+ this.addInput_ = document.getElementById(addInputId);
+ this.deleteInput_ = document.getElementById(deleteInputId);
+ this.queryOutputDiv_ = document.getElementById(queryOutputDivId);
+
+ var form = document.getElementById(formId);
+ form.addEventListener('submit', this.onSubmitQuery_.bind(this), false);
+ form = document.getElementById(addFormId);
+ form.addEventListener('submit', this.onSubmitAdd_.bind(this), false);
+ form = document.getElementById(deleteFormId);
+ form.addEventListener('submit', this.onSubmitDelete_.bind(this), false);
+
+ g_browser.addHSTSObserver(this);
+}
+
+inherits(HSTSView, DivView);
+
+HSTSView.prototype.onSubmitQuery_ = function(event) {
+ g_browser.sendHSTSQuery(this.queryInput_.value);
+ event.preventDefault();
+};
+
+HSTSView.prototype.onSubmitAdd_ = function(event) {
+ g_browser.sendHSTSAdd(this.addInput_.value, this.addCheck_.checked);
+ g_browser.sendHSTSQuery(this.addInput_.value);
+ this.queryInput_.value = this.addInput_.value;
+ this.addCheck_.checked = false;
+ this.addInput_.value = '';
+ event.preventDefault();
+};
+
+HSTSView.prototype.onSubmitDelete_ = function(event) {
+ g_browser.sendHSTSDelete(this.deleteInput_.value);
+ this.deleteInput_.value = '';
+ event.preventDefault();
+};
+
+function hstsModeToString(m) {
+ if (m == 0) {
+ return 'STRICT';
+ } else if (m == 1) {
+ return 'OPPORTUNISTIC';
+ } else if (m == 2) {
+ return 'SPDY';
+ } else {
+ return 'UNKNOWN';
+ }
+}
+
+function yellowFade(element) {
+ element.style.webkitTransitionProperty = 'background-color';
+ element.style.webkitTransitionDuration = '0';
+ element.style.backgroundColor = '#fffccf';
+ setTimeout(function() {
+ element.style.webkitTransitionDuration = '1000ms';
+ element.style.backgroundColor = '#fff';
+ }, 0);
+}
+
+HSTSView.prototype.onHSTSQueryResult = function(result) {
+ if (result.error != undefined) {
+ this.queryOutputDiv_.innerHTML = '';
+ s = addNode(this.queryOutputDiv_, 'span');
+ s.innerText = result.error;
+ s.style.color = 'red';
+ yellowFade(this.queryOutputDiv_);
+ return;
+ }
+
+ if (result.result == false) {
+ this.queryOutputDiv_.innerHTML = '<b>Not found</b>';
+ yellowFade(this.queryOutputDiv_);
+ return;
+ }
+
+ this.queryOutputDiv_.innerHTML = '';
+
+ s = addNode(this.queryOutputDiv_, 'span');
+ s.innerHTML = '<b>Found</b>: mode: ';
+
+ t = addNode(this.queryOutputDiv_, 'tt');
+ t.innerText = hstsModeToString(result.mode);
+
+ addTextNode(this.queryOutputDiv_, ' include_subdomains:');
+
+ t = addNode(this.queryOutputDiv_, 'tt');
+ t.innerText = result.subdomains;
+
+ addTextNode(this.queryOutputDiv_, ' domain:');
+
+ t = addNode(this.queryOutputDiv_, 'tt');
+ t.innerText = result.domain;
+
+ addTextNode(this.queryOutputDiv_, ' is_preloaded:');
+
+ t = addNode(this.queryOutputDiv_, 'tt');
+ t.innerText = result.preloaded;
+
+ yellowFade(this.queryOutputDiv_);
+}