Add Suspicious Site Reporter
| @ -0,0 +1 @@ | ||||
| [{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJhbGVydHNfYmluLWJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6InNxQldYR21hRVhCQnpFQW5sUmg2NVdZRzNSMHhYUzd1aGIyWFVRUG9UZHMifSx7InBhdGgiOiJhbGVydHNfYmluLk1GIiwicm9vdF9oYXNoIjoiam90ckhzcjRKS2xqVGxzZlMzZ0hmN1lmaDFhX3cyc1VzWVFsdmY3a0doQSJ9LHsicGF0aCI6ImFsZXJ0c19iaW4uanMiLCJyb290X2hhc2giOiJ5aWhSZHZhN3VtRkRBUHR2VThaOEVuSFBwS1B0VVpVZnpHMnhIOVcxZDdZIn0seyJwYXRoIjoiYmFja2dyb3VuZF9iaW4tYnVuZGxlLmpzIiwicm9vdF9oYXNoIjoiUmRIZ3ZmUGVndW5rU1ZPcFV2V3lSTEw5ZU9CamlmSDZIVTAtUHR5eGkxUSJ9LHsicGF0aCI6ImJhY2tncm91bmRfYmluLk1GIiwicm9vdF9oYXNoIjoid3hKNk1obl9HcktfLThobHlEcU1OQ1FFeGxGVjlqNkpjQWJpcnNuR2F4RSJ9LHsicGF0aCI6ImJhY2tncm91bmRfYmluLmpzIiwicm9vdF9oYXNoIjoiVF96M2dXMEtvdVJJQktYbjBYbU83dHExUWNVeEpqYk95bVVWMWpuVDhENCJ9LHsicGF0aCI6ImNvbnRlbnRfYmluLWJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IkxheXRmNkk1Q0l4QVo3aTZsamtUWkh2alVlRmhxU2ZGNjRxMkd6WGdtMVEifSx7InBhdGgiOiJjb250ZW50X2Jpbi5NRiIsInJvb3RfaGFzaCI6InYtelVmQTJFcUdGME1qT0pzT3VKMWhVY21nd2c4VmZ5QmNHdnNFRlFEdkUifSx7InBhdGgiOiJjb250ZW50X2Jpbi5qcyIsInJvb3RfaGFzaCI6ImJCZWFCcXo4MnVEUlc5VUF2TWpIcEhRYTNmYjI3MlFXbmhYbW5wUDdnNFUifSx7InBhdGgiOiJpbWFnZXMvY29uZmlybWF0aW9uLnBuZyIsInJvb3RfaGFzaCI6IjMtNFZuZ21LNGF5VlNNNkw5eXZYR2k1WEFPR2QyV290bDJ1c2EwVlhwX1EifSx7InBhdGgiOiJpbWFnZXMvZ3JheWZsYWcxMjgucG5nIiwicm9vdF9oYXNoIjoiYlFNX3JQa2pXUDRsZjhicG9LMmRzZGNXN3ZIbWlZdThETVZ1M2taRzZhYyJ9LHsicGF0aCI6ImltYWdlcy9ncmF5ZmxhZzE2LnBuZyIsInJvb3RfaGFzaCI6IlJISEhSZllCZGFwcFV4a2tkTVNJaDB5V2JoSmdXR1RjVUxPUFVLOFJzcEkifSx7InBhdGgiOiJpbWFnZXMvZ3JheWZsYWc0OC5wbmciLCJyb290X2hhc2giOiJWaEtwaFluUUZydmtmYXl2clduN05GNEhLVFJ3YkZWcV83Sk9PSXVtc3RRIn0seyJwYXRoIjoiaW1hZ2VzL29yYW5nZWZsYWcxMjgucG5nIiwicm9vdF9oYXNoIjoiQWhkR1dZQ04tMm80Vk13dDQyTzVmejhxSzZ2cWphakk4dTNnUmVVNllVZyJ9LHsicGF0aCI6ImltYWdlcy9vcmFuZ2VmbGFnMTYucG5nIiwicm9vdF9oYXNoIjoia2w5a0p6QW5qNS1RX1NXblUxNXdYaTJjRURlVGNhNXJPQ2luX0VFNmx5MCJ9LHsicGF0aCI6ImltYWdlcy9vcmFuZ2VmbGFnNDgucG5nIiwicm9vdF9oYXNoIjoiM3BFWFRtTHZqR21rTnFHRWcwdFFyN0U2UkhXVE50Y3NRQWJ6emVyYVRtZyJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJUZndUeldMSFdmYWs4a0d5NXI0b2dENDlwc3hDOHlMbTFxcEhMQ3BzUjAwIn0seyJwYXRoIjoicG9wdXAuY3NzIiwicm9vdF9oYXNoIjoiU05FQlI2S040MkZjcXZFbWdyX3JSSmZLUFlNUlNUUGpDckRVRnpGR2poVSJ9LHsicGF0aCI6InBvcHVwLmh0bWwiLCJyb290X2hhc2giOiJvak5ILThyZ2JRWm1BSWJZMkx4Y3QtZUo5QmItMy1Oa0w2LXZ4d0t6WndnIn0seyJwYXRoIjoicG9wdXBfYmluLWJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IlpydERwYjN1RlBCdGt4VUExd2RDX3RGYlhRU1FGQXhqbFU0eHZFdVVmcUEifSx7InBhdGgiOiJwb3B1cF9iaW4uTUYiLCJyb290X2hhc2giOiJ0T2xFUDZlNllhMGRzZmhkekxPZUQycEp3QVZYWlowRExfWHAwcVVIYzN3In0seyJwYXRoIjoicG9wdXBfYmluLmpzIiwicm9vdF9oYXNoIjoiTDJ6bDFNcnBiamwwZUJ6SWVvRTI4a0stVWhVT1RWWTc3bW5xV1hsYi1QayJ9LHsicGF0aCI6InRvcHNpdGVzLmpzb24iLCJyb290X2hhc2giOiJLT2UxOW9HY0ZFa0hqeTFIMWN3Z0hmYWFFV2FUcEhWSy1uS1ladU1nYlJ3In1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoiamtuZW1ibGtiZGhkY3BsbGZnYmZla2tkY2llZ2Zib2kiLCJpdGVtX3ZlcnNpb24iOiIxLjIzIiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"YMrApBqurisxmXM8yPBxZTDObREByjf6ToMSvm53oFSDRE7FGpebJhNPQCk3SU1PrHfsEPeHWQMbBMysRGoZ9dYN094aSGBZ9gjDl59vLoRu0dDPzm5ydinzeDp4jEK_Q9MmvpAot3aurtpKRav0rY89r8pcaqQERvxZUwIKXLZdwuu7M4eKrbdhWnPGcwY96xW2dJpVZSkoHmoz4qCV9x9ke3fLnO5QKod03mcooH4o61feoxY9gv6Oflc6YKldGqYv_OBuxCionv0hmm5-IK1GClM32VjjMFsk68BAvCwWo-LsM4zkkvxtqcmcLQ3IeLNrOFsrhL8Y5AkLr38Bfg"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"ash8p2GqVENGJMYo7Z-xW10pMPwTIDEEKZt6uLVlwyqbBXJzQgLtfGpFYnHRXLwK_8AAO-UdsYr8J4WxAODlExjEpXAc5Wa4wT7PXZ4gpSBEYZoX-8uuamK1kWqwKPjlc2devfyngJVtBJnL0IksENVovws-OybYms9Ou1Zc656sbuvg_os-1VqGORTwFSMax6seuWy1AXYCIBgP3k36mhjPXFmFc5LFeAaEnYve2uUJEGv9UrJ1Go9KQt2IWf_VPharpLqQMqcsLOCwAQXHl_sOrpaRuE3hLSJG0DrxUriBatHgNOz_x6Grt43nrcOdwXDsR5WTW3ldlfdWlfp-Cw"}]}}] | ||||
| @ -0,0 +1,34 @@ | ||||
| javascript/closure/base.js | ||||
| javascript/public_suffix/publicsuffixpatterns.js | ||||
| third_party/javascript/closure/debug/error.js | ||||
| third_party/javascript/closure/dom/nodetype.js | ||||
| third_party/javascript/closure/asserts/asserts.js | ||||
| third_party/javascript/closure/dom/asserts.js | ||||
| third_party/javascript/closure/functions/functions.js | ||||
| third_party/javascript/closure/array/array.js | ||||
| third_party/javascript/closure/dom/htmlelement.js | ||||
| third_party/javascript/closure/dom/tagname.js | ||||
| third_party/javascript/closure/object/object.js | ||||
| third_party/javascript/closure/dom/tags.js | ||||
| third_party/javascript/closure/html/trustedtypes.js | ||||
| third_party/javascript/closure/string/typedstring.js | ||||
| third_party/javascript/closure/string/const.js | ||||
| third_party/javascript/closure/html/safescript.js | ||||
| third_party/javascript/closure/fs/url.js | ||||
| third_party/javascript/closure/fs/blob.js | ||||
| third_party/javascript/closure/i18n/bidi.js | ||||
| third_party/javascript/closure/html/trustedresourceurl.js | ||||
| third_party/javascript/closure/string/internal.js | ||||
| third_party/javascript/closure/html/safeurl.js | ||||
| third_party/javascript/closure/html/safestyle.js | ||||
| third_party/javascript/closure/html/safestylesheet.js | ||||
| third_party/javascript/closure/labs/useragent/util.js | ||||
| third_party/javascript/closure/labs/useragent/browser.js | ||||
| third_party/javascript/closure/html/safehtml.js | ||||
| third_party/javascript/closure/html/uncheckedconversions.js | ||||
| third_party/javascript/closure/dom/safe.js | ||||
| third_party/javascript/closure/string/string.js | ||||
| third_party/javascript/closure/structs/structs.js | ||||
| third_party/javascript/closure/structs/trie.js | ||||
| javascript/public_suffix/tld.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/alerts.js | ||||
| @ -0,0 +1,57 @@ | ||||
| javascript/closure/base.js | ||||
| javascript/apps/jspb/binary/arith.js | ||||
| javascript/apps/jspb/binary/constants.js | ||||
| third_party/javascript/closure/debug/error.js | ||||
| third_party/javascript/closure/dom/nodetype.js | ||||
| third_party/javascript/closure/asserts/asserts.js | ||||
| third_party/javascript/closure/array/array.js | ||||
| third_party/javascript/closure/crypt/crypt.js | ||||
| third_party/javascript/closure/dom/asserts.js | ||||
| third_party/javascript/closure/functions/functions.js | ||||
| third_party/javascript/closure/dom/htmlelement.js | ||||
| third_party/javascript/closure/dom/tagname.js | ||||
| third_party/javascript/closure/object/object.js | ||||
| third_party/javascript/closure/dom/tags.js | ||||
| third_party/javascript/closure/html/trustedtypes.js | ||||
| third_party/javascript/closure/string/typedstring.js | ||||
| third_party/javascript/closure/string/const.js | ||||
| third_party/javascript/closure/html/safescript.js | ||||
| third_party/javascript/closure/fs/url.js | ||||
| third_party/javascript/closure/fs/blob.js | ||||
| third_party/javascript/closure/i18n/bidi.js | ||||
| third_party/javascript/closure/html/trustedresourceurl.js | ||||
| third_party/javascript/closure/string/internal.js | ||||
| third_party/javascript/closure/html/safeurl.js | ||||
| third_party/javascript/closure/html/safestyle.js | ||||
| third_party/javascript/closure/html/safestylesheet.js | ||||
| third_party/javascript/closure/labs/useragent/util.js | ||||
| third_party/javascript/closure/labs/useragent/browser.js | ||||
| third_party/javascript/closure/html/safehtml.js | ||||
| third_party/javascript/closure/html/uncheckedconversions.js | ||||
| third_party/javascript/closure/dom/safe.js | ||||
| third_party/javascript/closure/string/string.js | ||||
| third_party/javascript/closure/labs/useragent/platform.js | ||||
| third_party/javascript/closure/labs/useragent/engine.js | ||||
| third_party/javascript/closure/reflect/reflect.js | ||||
| third_party/javascript/closure/useragent/useragent.js | ||||
| third_party/javascript/closure/useragent/product.js | ||||
| third_party/javascript/closure/crypt/base64.js | ||||
| javascript/apps/jspb/binary/utils.js | ||||
| javascript/apps/jspb/binary/decoder.js | ||||
| javascript/apps/jspb/binary/encoder.js | ||||
| javascript/apps/jspb/binary/reader.js | ||||
| javascript/apps/jspb/binary/writer.js | ||||
| javascript/apps/jspb/extension_field_info.js | ||||
| javascript/apps/jspb/extension_field_binary_info.js | ||||
| javascript/apps/jspb/map.js | ||||
| javascript/apps/jspb/message.js | ||||
| javascript/public_suffix/publicsuffixpatterns.js | ||||
| third_party/javascript/closure/structs/structs.js | ||||
| third_party/javascript/closure/structs/trie.js | ||||
| javascript/public_suffix/tld.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/alerts.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/client_request_proto_lib_jspb/referrerchainentry.jspb.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/client_request_proto_lib_jspb/chromeextensionclientrequest.jspb.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/background.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/background_page.js | ||||
| javascript/apps/xid/xid.js | ||||
| @ -0,0 +1,2 @@ | ||||
| javascript/closure/base.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/content.js | ||||
| @ -0,0 +1,506 @@ | ||||
| /* | ||||
|  | ||||
|  Copyright The Closure Library Authors. | ||||
|  SPDX-License-Identifier: Apache-2.0 | ||||
| */ | ||||
| var goog = goog || {}; | ||||
| goog.global = this || self; | ||||
| goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) { | ||||
|   var parts = name.split("."), cur = opt_objectToExportTo || goog.global; | ||||
|   parts[0] in cur || "undefined" == typeof cur.execScript || cur.execScript("var " + parts[0]); | ||||
|   for (var part; parts.length && (part = parts.shift());) { | ||||
|     parts.length || void 0 === opt_object ? cur = cur[part] && cur[part] !== Object.prototype[part] ? cur[part] : cur[part] = {} : cur[part] = opt_object; | ||||
|   } | ||||
| }; | ||||
| goog.define = function(name, defaultValue) { | ||||
|   return defaultValue; | ||||
| }; | ||||
| goog.FEATURESET_YEAR = 2012; | ||||
| goog.DEBUG = !0; | ||||
| goog.LOCALE = "en"; | ||||
| goog.TRUSTED_SITE = !0; | ||||
| goog.STRICT_MODE_COMPATIBLE = !1; | ||||
| goog.DISALLOW_TEST_ONLY_CODE = !goog.DEBUG; | ||||
| goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1; | ||||
| goog.provide = function(name) { | ||||
|   if (goog.isInModuleLoader_()) { | ||||
|     throw Error("goog.provide cannot be used within a module."); | ||||
|   } | ||||
|   goog.constructNamespace_(name); | ||||
| }; | ||||
| goog.constructNamespace_ = function(name, opt_obj) { | ||||
|   goog.exportPath_(name, opt_obj); | ||||
| }; | ||||
| goog.getScriptNonce = function(opt_window) { | ||||
|   if (opt_window && opt_window != goog.global) { | ||||
|     return goog.getScriptNonce_(opt_window.document); | ||||
|   } | ||||
|   null === goog.cspNonce_ && (goog.cspNonce_ = goog.getScriptNonce_(goog.global.document)); | ||||
|   return goog.cspNonce_; | ||||
| }; | ||||
| goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/; | ||||
| goog.cspNonce_ = null; | ||||
| goog.getScriptNonce_ = function(doc) { | ||||
|   var script = doc.querySelector && doc.querySelector("script[nonce]"); | ||||
|   if (script) { | ||||
|     var nonce = script.nonce || script.getAttribute("nonce"); | ||||
|     if (nonce && goog.NONCE_PATTERN_.test(nonce)) { | ||||
|       return nonce; | ||||
|     } | ||||
|   } | ||||
|   return ""; | ||||
| }; | ||||
| goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; | ||||
| goog.module = function(name) { | ||||
|   if ("string" !== typeof name || !name || -1 == name.search(goog.VALID_MODULE_RE_)) { | ||||
|     throw Error("Invalid module identifier"); | ||||
|   } | ||||
|   if (!goog.isInGoogModuleLoader_()) { | ||||
|     throw Error("Module " + name + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide."); | ||||
|   } | ||||
|   if (goog.moduleLoaderState_.moduleName) { | ||||
|     throw Error("goog.module may only be called once per module."); | ||||
|   } | ||||
|   goog.moduleLoaderState_.moduleName = name; | ||||
| }; | ||||
| goog.module.get = function() { | ||||
|   return null; | ||||
| }; | ||||
| goog.module.getInternal_ = function() { | ||||
|   return null; | ||||
| }; | ||||
| goog.ModuleType = {ES6:"es6", GOOG:"goog"}; | ||||
| goog.moduleLoaderState_ = null; | ||||
| goog.isInModuleLoader_ = function() { | ||||
|   return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_(); | ||||
| }; | ||||
| goog.isInGoogModuleLoader_ = function() { | ||||
|   return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG; | ||||
| }; | ||||
| goog.isInEs6ModuleLoader_ = function() { | ||||
|   if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6) { | ||||
|     return !0; | ||||
|   } | ||||
|   var jscomp = goog.global.$jscomp; | ||||
|   return jscomp ? "function" != typeof jscomp.getCurrentModulePath ? !1 : !!jscomp.getCurrentModulePath() : !1; | ||||
| }; | ||||
| goog.module.declareLegacyNamespace = function() { | ||||
|   goog.moduleLoaderState_.declareLegacyNamespace = !0; | ||||
| }; | ||||
| goog.declareModuleId = function(namespace) { | ||||
|   if (goog.moduleLoaderState_) { | ||||
|     goog.moduleLoaderState_.moduleName = namespace; | ||||
|   } else { | ||||
|     var jscomp = goog.global.$jscomp; | ||||
|     if (!jscomp || "function" != typeof jscomp.getCurrentModulePath) { | ||||
|       throw Error('Module with namespace "' + namespace + '" has been loaded incorrectly.'); | ||||
|     } | ||||
|     var exports = jscomp.require(jscomp.getCurrentModulePath()); | ||||
|     goog.loadedModules_[namespace] = {exports:exports, type:goog.ModuleType.ES6, moduleId:namespace}; | ||||
|   } | ||||
| }; | ||||
| goog.setTestOnly = function(opt_message) { | ||||
|   if (goog.DISALLOW_TEST_ONLY_CODE) { | ||||
|     throw opt_message = opt_message || "", Error("Importing test-only code into non-debug environment" + (opt_message ? ": " + opt_message : ".")); | ||||
|   } | ||||
| }; | ||||
| goog.forwardDeclare = function() { | ||||
| }; | ||||
| goog.getObjectByName = function(name, opt_obj) { | ||||
|   for (var parts = name.split("."), cur = opt_obj || goog.global, i = 0; i < parts.length; i++) { | ||||
|     if (cur = cur[parts[i]], null == cur) { | ||||
|       return null; | ||||
|     } | ||||
|   } | ||||
|   return cur; | ||||
| }; | ||||
| goog.globalize = function(obj, opt_global) { | ||||
|   var global = opt_global || goog.global, x; | ||||
|   for (x in obj) { | ||||
|     global[x] = obj[x]; | ||||
|   } | ||||
| }; | ||||
| goog.addDependency = function() { | ||||
| }; | ||||
| goog.useStrictRequires = !1; | ||||
| goog.ENABLE_DEBUG_LOADER = !0; | ||||
| goog.logToConsole_ = function(msg) { | ||||
|   goog.global.console && goog.global.console.error(msg); | ||||
| }; | ||||
| goog.require = function() { | ||||
| }; | ||||
| goog.requireType = function() { | ||||
|   return {}; | ||||
| }; | ||||
| goog.basePath = ""; | ||||
| goog.nullFunction = function() { | ||||
| }; | ||||
| goog.abstractMethod = function() { | ||||
|   throw Error("unimplemented abstract method"); | ||||
| }; | ||||
| goog.addSingletonGetter = function() { | ||||
| }; | ||||
| goog.instantiatedSingletons_ = []; | ||||
| goog.LOAD_MODULE_USING_EVAL = !0; | ||||
| goog.SEAL_MODULE_EXPORTS = goog.DEBUG; | ||||
| goog.loadedModules_ = {}; | ||||
| goog.DEPENDENCIES_ENABLED = !1; | ||||
| goog.TRANSPILE = "detect"; | ||||
| goog.ASSUME_ES_MODULES_TRANSPILED = !1; | ||||
| goog.TRANSPILE_TO_LANGUAGE = ""; | ||||
| goog.TRANSPILER = "transpile.js"; | ||||
| goog.hasBadLetScoping = null; | ||||
| goog.useSafari10Workaround = function() { | ||||
|   if (null == goog.hasBadLetScoping) { | ||||
|     try { | ||||
|       var hasBadLetScoping = !eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";'); | ||||
|     } catch (e) { | ||||
|       hasBadLetScoping = !1; | ||||
|     } | ||||
|     goog.hasBadLetScoping = hasBadLetScoping; | ||||
|   } | ||||
|   return goog.hasBadLetScoping; | ||||
| }; | ||||
| goog.workaroundSafari10EvalBug = function(moduleDef) { | ||||
|   return "(function(){" + moduleDef + "\n;})();\n"; | ||||
| }; | ||||
| goog.loadModule = function(moduleDef) { | ||||
|   var previousState = goog.moduleLoaderState_; | ||||
|   try { | ||||
|     goog.moduleLoaderState_ = {moduleName:"", declareLegacyNamespace:!1, type:goog.ModuleType.GOOG}; | ||||
|     if (goog.isFunction(moduleDef)) { | ||||
|       var exports = moduleDef.call(void 0, {}); | ||||
|     } else { | ||||
|       if ("string" === typeof moduleDef) { | ||||
|         goog.useSafari10Workaround() && (moduleDef = goog.workaroundSafari10EvalBug(moduleDef)), exports = goog.loadModuleFromSource_.call(void 0, moduleDef); | ||||
|       } else { | ||||
|         throw Error("Invalid module definition"); | ||||
|       } | ||||
|     } | ||||
|     var moduleName = goog.moduleLoaderState_.moduleName; | ||||
|     if ("string" === typeof moduleName && moduleName) { | ||||
|       goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(moduleName, exports) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == typeof exports && null != exports && Object.seal(exports), goog.loadedModules_[moduleName] = {exports:exports, type:goog.ModuleType.GOOG, moduleId:goog.moduleLoaderState_.moduleName}; | ||||
|     } else { | ||||
|       throw Error('Invalid module name "' + moduleName + '"'); | ||||
|     } | ||||
|   } finally { | ||||
|     goog.moduleLoaderState_ = previousState; | ||||
|   } | ||||
| }; | ||||
| goog.loadModuleFromSource_ = function(JSCompiler_OptimizeArgumentsArray_p0) { | ||||
|   eval(JSCompiler_OptimizeArgumentsArray_p0); | ||||
|   return {}; | ||||
| }; | ||||
| goog.normalizePath_ = function(path) { | ||||
|   for (var components = path.split("/"), i = 0; i < components.length;) { | ||||
|     "." == components[i] ? components.splice(i, 1) : i && ".." == components[i] && components[i - 1] && ".." != components[i - 1] ? components.splice(--i, 2) : i++; | ||||
|   } | ||||
|   return components.join("/"); | ||||
| }; | ||||
| goog.loadFileSync_ = function(src) { | ||||
|   if (goog.global.CLOSURE_LOAD_FILE_SYNC) { | ||||
|     return goog.global.CLOSURE_LOAD_FILE_SYNC(src); | ||||
|   } | ||||
|   try { | ||||
|     var xhr = new goog.global.XMLHttpRequest; | ||||
|     xhr.open("get", src, !1); | ||||
|     xhr.send(); | ||||
|     return 0 == xhr.status || 200 == xhr.status ? xhr.responseText : null; | ||||
|   } catch (err) { | ||||
|     return null; | ||||
|   } | ||||
| }; | ||||
| goog.transpile_ = function(code$jscomp$0, path$jscomp$0, target) { | ||||
|   var jscomp = goog.global.$jscomp; | ||||
|   jscomp || (goog.global.$jscomp = jscomp = {}); | ||||
|   var transpile = jscomp.transpile; | ||||
|   if (!transpile) { | ||||
|     var transpilerPath = goog.basePath + goog.TRANSPILER, transpilerCode = goog.loadFileSync_(transpilerPath); | ||||
|     if (transpilerCode) { | ||||
|       (function() { | ||||
|         (0,eval)(transpilerCode + "\n//# sourceURL=" + transpilerPath); | ||||
|       }).call(goog.global); | ||||
|       if (goog.global.$gwtExport && goog.global.$gwtExport.$jscomp && !goog.global.$gwtExport.$jscomp.transpile) { | ||||
|         throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: ' + JSON.stringify(goog.global.$gwtExport)); | ||||
|       } | ||||
|       goog.global.$jscomp.transpile = goog.global.$gwtExport.$jscomp.transpile; | ||||
|       jscomp = goog.global.$jscomp; | ||||
|       transpile = jscomp.transpile; | ||||
|     } | ||||
|   } | ||||
|   if (!transpile) { | ||||
|     var suffix = " requires transpilation but no transpiler was found."; | ||||
|     suffix += ' Please add "//javascript/closure:transpiler" as a data dependency to ensure it is included.'; | ||||
|     transpile = jscomp.transpile = function(code, path) { | ||||
|       goog.logToConsole_(path + suffix); | ||||
|       return code; | ||||
|     }; | ||||
|   } | ||||
|   return transpile(code$jscomp$0, path$jscomp$0, target); | ||||
| }; | ||||
| goog.typeOf = function(value) { | ||||
|   var s = typeof value; | ||||
|   if ("object" == s) { | ||||
|     if (value) { | ||||
|       if (value instanceof Array) { | ||||
|         return "array"; | ||||
|       } | ||||
|       if (value instanceof Object) { | ||||
|         return s; | ||||
|       } | ||||
|       var className = Object.prototype.toString.call(value); | ||||
|       if ("[object Window]" == className) { | ||||
|         return "object"; | ||||
|       } | ||||
|       if ("[object Array]" == className || "number" == typeof value.length && "undefined" != typeof value.splice && "undefined" != typeof value.propertyIsEnumerable && !value.propertyIsEnumerable("splice")) { | ||||
|         return "array"; | ||||
|       } | ||||
|       if ("[object Function]" == className || "undefined" != typeof value.call && "undefined" != typeof value.propertyIsEnumerable && !value.propertyIsEnumerable("call")) { | ||||
|         return "function"; | ||||
|       } | ||||
|     } else { | ||||
|       return "null"; | ||||
|     } | ||||
|   } else { | ||||
|     if ("function" == s && "undefined" == typeof value.call) { | ||||
|       return "object"; | ||||
|     } | ||||
|   } | ||||
|   return s; | ||||
| }; | ||||
| goog.isArray = function(val) { | ||||
|   return "array" == goog.typeOf(val); | ||||
| }; | ||||
| goog.isArrayLike = function(val) { | ||||
|   var type = goog.typeOf(val); | ||||
|   return "array" == type || "object" == type && "number" == typeof val.length; | ||||
| }; | ||||
| goog.isDateLike = function(val) { | ||||
|   return goog.isObject(val) && "function" == typeof val.getFullYear; | ||||
| }; | ||||
| goog.isFunction = function(val) { | ||||
|   return "function" == goog.typeOf(val); | ||||
| }; | ||||
| goog.isObject = function(val) { | ||||
|   var type = typeof val; | ||||
|   return "object" == type && null != val || "function" == type; | ||||
| }; | ||||
| goog.getUid = function(obj) { | ||||
|   return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) && obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_); | ||||
| }; | ||||
| goog.hasUid = function(obj) { | ||||
|   return !!obj[goog.UID_PROPERTY_]; | ||||
| }; | ||||
| goog.removeUid = function(obj) { | ||||
|   null !== obj && "removeAttribute" in obj && obj.removeAttribute(goog.UID_PROPERTY_); | ||||
|   try { | ||||
|     delete obj[goog.UID_PROPERTY_]; | ||||
|   } catch (ex) { | ||||
|   } | ||||
| }; | ||||
| goog.UID_PROPERTY_ = "closure_uid_" + (1e9 * Math.random() >>> 0); | ||||
| goog.uidCounter_ = 0; | ||||
| goog.getHashCode = goog.getUid; | ||||
| goog.removeHashCode = goog.removeUid; | ||||
| goog.cloneObject = function(obj) { | ||||
|   var type = goog.typeOf(obj); | ||||
|   if ("object" == type || "array" == type) { | ||||
|     if ("function" === typeof obj.clone) { | ||||
|       return obj.clone(); | ||||
|     } | ||||
|     var clone = "array" == type ? [] : {}, key; | ||||
|     for (key in obj) { | ||||
|       clone[key] = goog.cloneObject(obj[key]); | ||||
|     } | ||||
|     return clone; | ||||
|   } | ||||
|   return obj; | ||||
| }; | ||||
| goog.bindNative_ = function(fn, selfObj, var_args) { | ||||
|   return fn.call.apply(fn.bind, arguments); | ||||
| }; | ||||
| goog.bindJs_ = function(fn, selfObj, var_args) { | ||||
|   if (!fn) { | ||||
|     throw Error(); | ||||
|   } | ||||
|   if (2 < arguments.length) { | ||||
|     var boundArgs = Array.prototype.slice.call(arguments, 2); | ||||
|     return function() { | ||||
|       var newArgs = Array.prototype.slice.call(arguments); | ||||
|       Array.prototype.unshift.apply(newArgs, boundArgs); | ||||
|       return fn.apply(selfObj, newArgs); | ||||
|     }; | ||||
|   } | ||||
|   return function() { | ||||
|     return fn.apply(selfObj, arguments); | ||||
|   }; | ||||
| }; | ||||
| goog.bind = function(fn, selfObj, var_args) { | ||||
|   goog.bind = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bindNative_ : goog.bindJs_; | ||||
|   return goog.bind.apply(null, arguments); | ||||
| }; | ||||
| goog.partial = function(fn, var_args) { | ||||
|   var args = Array.prototype.slice.call(arguments, 1); | ||||
|   return function() { | ||||
|     var newArgs = args.slice(); | ||||
|     newArgs.push.apply(newArgs, arguments); | ||||
|     return fn.apply(this, newArgs); | ||||
|   }; | ||||
| }; | ||||
| goog.mixin = function(target, source) { | ||||
|   for (var x in source) { | ||||
|     target[x] = source[x]; | ||||
|   } | ||||
| }; | ||||
| goog.now = goog.TRUSTED_SITE && Date.now || function() { | ||||
|   return +new Date; | ||||
| }; | ||||
| goog.globalEval = function(script) { | ||||
|   if (goog.global.execScript) { | ||||
|     goog.global.execScript(script, "JavaScript"); | ||||
|   } else { | ||||
|     if (goog.global.eval) { | ||||
|       if (null == goog.evalWorks_) { | ||||
|         try { | ||||
|           goog.global.eval(""), goog.evalWorks_ = !0; | ||||
|         } catch (ignore) { | ||||
|           goog.evalWorks_ = !1; | ||||
|         } | ||||
|       } | ||||
|       if (goog.evalWorks_) { | ||||
|         goog.global.eval(script); | ||||
|       } else { | ||||
|         var doc = goog.global.document, scriptElt = doc.createElement("script"); | ||||
|         scriptElt.type = "text/javascript"; | ||||
|         scriptElt.defer = !1; | ||||
|         scriptElt.appendChild(doc.createTextNode(script)); | ||||
|         doc.head.appendChild(scriptElt); | ||||
|         doc.head.removeChild(scriptElt); | ||||
|       } | ||||
|     } else { | ||||
|       throw Error("goog.globalEval not available"); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| goog.evalWorks_ = null; | ||||
| goog.getCssName = function(className, opt_modifier) { | ||||
|   if ("." == String(className).charAt(0)) { | ||||
|     throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + className); | ||||
|   } | ||||
|   var getMapping = function(cssName) { | ||||
|     return goog.cssNameMapping_[cssName] || cssName; | ||||
|   }, renameByParts = function(cssName) { | ||||
|     for (var parts = cssName.split("-"), mapped = [], i = 0; i < parts.length; i++) { | ||||
|       mapped.push(getMapping(parts[i])); | ||||
|     } | ||||
|     return mapped.join("-"); | ||||
|   }; | ||||
|   var rename = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? getMapping : renameByParts : function(a) { | ||||
|     return a; | ||||
|   }; | ||||
|   var result = opt_modifier ? className + "-" + rename(opt_modifier) : rename(className); | ||||
|   return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(result) : result; | ||||
| }; | ||||
| goog.setCssNameMapping = function(mapping, opt_style) { | ||||
|   goog.cssNameMapping_ = mapping; | ||||
|   goog.cssNameMappingStyle_ = opt_style; | ||||
| }; | ||||
| goog.getMsg = function(str, opt_values, opt_options) { | ||||
|   opt_options && opt_options.html && (str = str.replace(/</g, "<")); | ||||
|   opt_values && (str = str.replace(/\{\$([^}]+)}/g, function(match, key) { | ||||
|     return null != opt_values && key in opt_values ? opt_values[key] : match; | ||||
|   })); | ||||
|   return str; | ||||
| }; | ||||
| goog.getMsgWithFallback = function(a) { | ||||
|   return a; | ||||
| }; | ||||
| goog.exportSymbol = function(publicPath, object, opt_objectToExportTo) { | ||||
|   goog.exportPath_(publicPath, object, opt_objectToExportTo); | ||||
| }; | ||||
| goog.exportProperty = function(object, publicName, symbol) { | ||||
|   object[publicName] = symbol; | ||||
| }; | ||||
| goog.inherits = function(childCtor, parentCtor) { | ||||
|   function tempCtor() { | ||||
|   } | ||||
|   tempCtor.prototype = parentCtor.prototype; | ||||
|   childCtor.prototype = new tempCtor; | ||||
|   childCtor.prototype.constructor = childCtor; | ||||
| }; | ||||
| goog.scope = function(fn) { | ||||
|   if (goog.isInModuleLoader_()) { | ||||
|     throw Error("goog.scope is not supported within a module."); | ||||
|   } | ||||
|   fn.call(goog.global); | ||||
| }; | ||||
| goog.defineClass = function(superClass, def) { | ||||
|   var constructor = def.constructor, statics = def.statics; | ||||
|   constructor && constructor != Object.prototype.constructor || (constructor = function() { | ||||
|     throw Error("cannot instantiate an interface (no constructor defined)."); | ||||
|   }); | ||||
|   var cls = goog.defineClass.createSealingConstructor_(constructor, superClass); | ||||
|   superClass && goog.inherits(cls, superClass); | ||||
|   delete def.constructor; | ||||
|   delete def.statics; | ||||
|   goog.defineClass.applyProperties_(cls.prototype, def); | ||||
|   null != statics && (statics instanceof Function ? statics(cls) : goog.defineClass.applyProperties_(cls, statics)); | ||||
|   return cls; | ||||
| }; | ||||
| goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG; | ||||
| goog.defineClass.createSealingConstructor_ = function(ctr) { | ||||
|   return goog.defineClass.SEAL_CLASS_INSTANCES ? function() { | ||||
|     var instance = ctr.apply(this, arguments) || this; | ||||
|     instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_]; | ||||
|     return instance; | ||||
|   } : ctr; | ||||
| }; | ||||
| goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); | ||||
| goog.defineClass.applyProperties_ = function(target, source) { | ||||
|   for (var key in source) { | ||||
|     Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]); | ||||
|   } | ||||
|   for (var i = 0; i < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; i++) { | ||||
|     key = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[i], Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]); | ||||
|   } | ||||
| }; | ||||
| goog.tagUnsealableClass = function() { | ||||
| }; | ||||
| goog.TRUSTED_TYPES_POLICY_NAME = ""; | ||||
| goog.identity_ = function(s) { | ||||
|   return s; | ||||
| }; | ||||
| goog.createTrustedTypesPolicy = function(name) { | ||||
|   var policy = null, policyFactory = goog.global.trustedTypes; | ||||
|   if (!policyFactory || !policyFactory.createPolicy) { | ||||
|     return policy; | ||||
|   } | ||||
|   try { | ||||
|     policy = policyFactory.createPolicy(name, {createHTML:goog.identity_, createScript:goog.identity_, createScriptURL:goog.identity_}); | ||||
|   } catch (e) { | ||||
|     goog.logToConsole_(e.message); | ||||
|   } | ||||
|   return policy; | ||||
| }; | ||||
| /* | ||||
|  | ||||
|  Copyright 2019 Google LLC | ||||
|  | ||||
|  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. | ||||
| */ | ||||
| new function() { | ||||
|   chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { | ||||
|     request.sendDom && sendResponse(document.all[0].outerHTML); | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| After Width: | Height: | Size: 23 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 276 B | 
| After Width: | Height: | Size: 614 B | 
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 276 B | 
| After Width: | Height: | Size: 578 B | 
| @ -0,0 +1,26 @@ | ||||
| { | ||||
|    "background": { | ||||
|       "persistent": false, | ||||
|       "scripts": [ "alerts_bin.js", "background_bin.js" ] | ||||
|    }, | ||||
|    "browser_action": { | ||||
|       "default_icon": { | ||||
|          "128": "images/grayflag128.png", | ||||
|          "16": "images/grayflag16.png", | ||||
|          "48": "images/grayflag48.png" | ||||
|       }, | ||||
|       "default_popup": "popup.html" | ||||
|    }, | ||||
|    "description": "Extension for reporting suspicious sites to Safe Browsing.", | ||||
|    "icons": { | ||||
|       "128": "images/orangeflag128.png", | ||||
|       "16": "images/orangeflag16.png", | ||||
|       "48": "images/orangeflag48.png" | ||||
|    }, | ||||
|    "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAowA8wOUQ8ShyITJ15B9rcJrnoolyo+OLj07g8QWBlEBikgszYwlbc88OIRL+dJOASok3yG6RQ60fvIjBrtNEk1yQZJfNwF/CN0jFrkE3HN3xVMoX0XIQPB93kDZARcfR5nwU3RUgwwWGTqt69KSSU8QzRRQJSEgM8GENa3OBhw1UBn/I/RbhaFcTykJSomo9j55goJwNzUhXTJk458DQ5diY+gWMadDXlDBa8cciCVlaGOjBV5ezmxnD6p1GXhrvyEKZP8IlreDJC2Nw9hxrT3GIo1FzbmeDPANKJ9pkY1H3LOVsGJDtytBpD/FRErlvfkJVqp3N5ifF2EQ8lOAHrQIDAQAB", | ||||
|    "manifest_version": 2, | ||||
|    "name": "Suspicious Site Reporter", | ||||
|    "permissions": [ "https://safebrowsing.google.com/*", "activeTab", "history", "safeBrowsingPrivate", "tabs" ], | ||||
|    "update_url": "https://clients2.google.com/service/update2/crx", | ||||
|    "version": "1.23" | ||||
| } | ||||
| @ -0,0 +1,341 @@ | ||||
| /* | ||||
|  * Copyright 2019 Google LLC | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| :root { | ||||
|   --normal-text-size: 0.813em; | ||||
|   --emphasis-text-size: 0.875em; | ||||
|   --header-text-size: 1em; | ||||
|   --google-blue-500: #4285f4; | ||||
|   --google-grey-700: #5f6368; | ||||
|   --google-grey-800: #3c4043; | ||||
|   --google-grey-900: #202124; | ||||
|   --hover-highlight: rgba(32, 33, 36, 0.08); | ||||
| } | ||||
|  | ||||
| body { | ||||
|   background: #fff; | ||||
|   font-family: 'Roboto', 'DejaVu Sans', 'Arial', Sans-Serif; | ||||
|   font-size: 100%; | ||||
|   margin: 16px; | ||||
|   width: 300px; | ||||
| } | ||||
|  | ||||
| #confirmation, | ||||
| #error { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .header { | ||||
|   color: var(--google-grey-900); | ||||
|   font-size: var(--header-text-size); | ||||
|   font-weight: 400; | ||||
|   margin: 0; | ||||
|   padding-bottom: 8px; | ||||
| } | ||||
|  | ||||
| .section { | ||||
|   padding-bottom: 8px; | ||||
| } | ||||
|  | ||||
| .section-title { | ||||
|   color: var(--google-grey-900); | ||||
|   font-size: var(--emphasis-text-size); | ||||
|   font-weight: 400; | ||||
|   margin: 0; | ||||
|   padding: 8px 0; | ||||
| } | ||||
|  | ||||
| .site-info-alert { | ||||
|   color: var(--google-grey-700); | ||||
|   font-size: var(--normal-text-size); | ||||
|   padding-top: 8px; | ||||
| } | ||||
|  | ||||
| .no-alerts { | ||||
|   list-style: none; | ||||
|   padding-left: 28px; | ||||
| } | ||||
|  | ||||
| .caption { | ||||
|   color: var(--google-grey-700); | ||||
|   display: block; | ||||
|   font-size: 92%; | ||||
|   padding-top: 6px; | ||||
|   word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| ul { | ||||
|   margin: 0; | ||||
| } | ||||
|  | ||||
| .details-list { | ||||
|   list-style: none; | ||||
|   padding: 0; | ||||
| } | ||||
|  | ||||
| .list-item { | ||||
|   padding: 8px 0; | ||||
| } | ||||
|  | ||||
| .detail-container { | ||||
|   color: var(--google-grey-800); | ||||
|   cursor: pointer; | ||||
|   display: block; | ||||
|   font-size: var(--normal-text-size); | ||||
|   position: relative; | ||||
|   padding-left: 28px; | ||||
|   user-select: none; | ||||
| } | ||||
|  | ||||
| /* Custom checkbox */ | ||||
|  | ||||
| .detail-container input { | ||||
|   cursor: pointer; | ||||
|   height: 0; | ||||
|   opacity: 0; | ||||
|   position: absolute; | ||||
|   width: 0; | ||||
| } | ||||
|  | ||||
| .disabled-container { | ||||
|   cursor: default; | ||||
| } | ||||
|  | ||||
| /* Draw the bounding box */ | ||||
| .checkbox { | ||||
|   background-color: #fff; | ||||
|   border-radius: 2px; | ||||
|   border: 2px solid var(--google-grey-700); | ||||
|   height: var(--normal-text-size); | ||||
|   left: 0; | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   width: var(--normal-text-size); | ||||
| } | ||||
|  | ||||
| .disabled-checkbox { | ||||
|   height: 1.25em; | ||||
|   left: 0; | ||||
|   width: 1.25em; | ||||
| } | ||||
|  | ||||
| /* Style the background of a checked box */ | ||||
| .detail-container input:checked ~ .checkbox { | ||||
|   background-color: var(--google-blue-500); | ||||
|   border: 2px solid var(--google-blue-500); | ||||
| } | ||||
|  | ||||
| .detail-container input:checked ~ .disabled-checkbox { | ||||
|   background-color: #fff; | ||||
|   border: none; | ||||
| } | ||||
|  | ||||
| .disabled-unchecked-checkbox { | ||||
|   background-color: #fff; | ||||
|   border: 2px solid #9aa0a6; | ||||
|   height: var(--normal-text-size); | ||||
|   width: var(--normal-text-size); | ||||
| } | ||||
|  | ||||
| /* Hide the default checkbox */ | ||||
| .checkbox:after { | ||||
|   content: ''; | ||||
|   display: none; | ||||
|   position: absolute; | ||||
| } | ||||
|  | ||||
| /* Display the checkmark when checked */ | ||||
| .detail-container input:checked ~ .checkbox:after { | ||||
|   display: block; | ||||
| } | ||||
|  | ||||
| /* Draw the checkmark */ | ||||
| .detail-container .checkbox:after { | ||||
|   border: solid #fff; | ||||
|   border-width: 0 2px 2px 0; | ||||
|   height: 73%; | ||||
|   transform: scale(1) rotate(45deg); | ||||
|   transform-origin: 100% 80%; | ||||
|   width: 36%; | ||||
| } | ||||
|  | ||||
| /* Draw the checkmark for a disabled and checked box */ | ||||
| .detail-container .disabled-checkbox:after { | ||||
|   border: solid var(--google-grey-900); | ||||
|   border-width: 0 2px 2px 0; | ||||
|   height: 73%; | ||||
|   transform: scale(1) rotate(45deg); | ||||
|   transform-origin: 100% 80%; | ||||
|   width: 36%; | ||||
| } | ||||
|  | ||||
| /* Preview box */ | ||||
|  | ||||
| .preview { | ||||
|   box-shadow: 0 1px 4px rgba(0, 0, 0, .4); | ||||
|   max-height: 200px; | ||||
|   max-width: 310px; | ||||
| } | ||||
|  | ||||
| .data-preview:not(.error-link) a { | ||||
|   color: var(--google-blue-500); | ||||
|   display: inline-block; | ||||
|   position: relative; | ||||
| } | ||||
|  | ||||
| .data-preview a span { | ||||
|   cursor: default; | ||||
|   display: none; | ||||
|   position: absolute; | ||||
|   z-index: 1; | ||||
| } | ||||
|  | ||||
| .data-preview .shown-preview span { | ||||
|   bottom: 100%; | ||||
|   display: inline-block; | ||||
|   left: 50%; | ||||
|   margin-left: -64px; | ||||
| } | ||||
|  | ||||
| .referrer-bubble { | ||||
|   box-shadow: 0 1px 4px rgba(0, 0, 0, .4); | ||||
|   background-color: #fff; | ||||
|   color: var(--google-grey-800); | ||||
|   list-style: none; | ||||
|   overflow: auto; | ||||
|   margin-left: -8px; | ||||
|   max-height: 150px; | ||||
|   padding: 16px; | ||||
|   width: 280px; | ||||
|   word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| .referrer-url { | ||||
|   padding-top: 4px; | ||||
| } | ||||
|  | ||||
| .referrer-url:not(.truncated) { | ||||
|   margin-left: 24px; | ||||
|   text-indent: -24px; | ||||
| } | ||||
|  | ||||
| .truncated { | ||||
|   overflow: hidden; | ||||
|   text-overflow: ellipsis; | ||||
|   white-space: nowrap; | ||||
| } | ||||
|  | ||||
| .multiline { | ||||
|   cursor: pointer; | ||||
| } | ||||
|  | ||||
| .error-info { | ||||
|   box-shadow: 0 1px 4px rgba(0, 0, 0, .4); | ||||
|   background-color: #fff; | ||||
|   color: var(--google-grey-800); | ||||
|   margin-left: 24px; | ||||
|   padding: 16px; | ||||
|   width: 212px; | ||||
| } | ||||
|  | ||||
| /* Blue button */ | ||||
|  | ||||
| .blue-button { | ||||
|   cursor: pointer; | ||||
|   background-color: var(--google-blue-500); | ||||
|   border: none; | ||||
|   border-radius: 4px; | ||||
|   color: #fff; | ||||
|   float: right; | ||||
|   font-family: 'Roboto', 'DejaVu Sans', 'Arial', Sans-Serif; | ||||
|   font-size: var(--normal-text-size); | ||||
|   font-weight: 500; | ||||
|   margin: 16px 0 16px 8px; | ||||
|   padding: 8px 16px; | ||||
|   transition-timing-function: ease; | ||||
| } | ||||
|  | ||||
| .blue-button:hover { | ||||
|   background-color: #1a73e8; | ||||
| } | ||||
|  | ||||
| /* Confirmation/error dialogs */ | ||||
|  | ||||
| .wrapper { | ||||
|   align-items: center; | ||||
|   display: flex; | ||||
|   margin-top: 24px; | ||||
| } | ||||
|  | ||||
| .info-text { | ||||
|   font-size: var(--emphasis-text-size); | ||||
| } | ||||
|  | ||||
| #info-icon { | ||||
|   font-size: 24px; | ||||
|   margin-right: 16px; | ||||
| } | ||||
|  | ||||
| #confirmation-img { | ||||
|   display: block; | ||||
|   margin: 56px 0 16px 0; | ||||
| } | ||||
|  | ||||
| /* Top right close button */ | ||||
|  | ||||
| .material-icons.close-button { | ||||
|   background-color: transparent; | ||||
|   border: none; | ||||
|   color: var(--google-grey-700); | ||||
|   cursor: pointer; | ||||
|   font-size: 20px; | ||||
|   margin: 8px 8px 0 0; | ||||
|   padding: 0; | ||||
|   position: absolute; | ||||
|   right: 0; | ||||
|   top: 0; | ||||
| } | ||||
|  | ||||
| .material-icons.close-button:hover { | ||||
|   background-color: var(--hover-highlight); | ||||
| } | ||||
|  | ||||
| /* Progress indicator */ | ||||
|  | ||||
| #progress-container { | ||||
|   align-items: center; | ||||
|   display: flex; | ||||
|   float: right; | ||||
| } | ||||
|  | ||||
| .progress-circular { | ||||
|   animation: spin 2s infinite linear; | ||||
|   border: 3px solid transparent; | ||||
|   border-bottom: 3px solid var(--google-blue-500); | ||||
|   border-left: 3px solid var(--google-blue-500); | ||||
|   border-radius: 50%; | ||||
|   border-top: 3px solid var(--google-blue-500); | ||||
|   display: inline-block; | ||||
|   float: left; | ||||
|   height: 20px; | ||||
|   width: 20px; | ||||
| } | ||||
|  | ||||
| @keyframes spin { | ||||
|   100% { | ||||
|     transform: rotate(360deg); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,112 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
| <head> | ||||
|   <link rel="stylesheet" href="popup.css"> | ||||
|   <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> | ||||
|   <meta charset="utf-8"> | ||||
| </head> | ||||
| <body> | ||||
|   <button class="material-icons close-button">close</button> | ||||
|  | ||||
|   <!-- Report page --> | ||||
|   <div id="main"> | ||||
|     <h1 class="header">Report site to Google</h1> | ||||
|  | ||||
|     <div class="section" id="site-info"> | ||||
|       <h2 class="section-title" id="alert-header">What should be considered about this site</h2> | ||||
|       <ul id="alerts"></ul> | ||||
|     </div> | ||||
|  | ||||
|     <div class="section"> | ||||
|       <h2 class="section-title">Details included with your report:</h2> | ||||
|       <ul class="details-list" role="group" aria-label="List with checkbox items"> | ||||
|         <li class="list-item" role="checkbox" aria-checked="true"> | ||||
|           <label class="detail-container disabled-container" for="url">URL | ||||
|             <input type="checkbox" name="report-data" value="url" id="url" | ||||
|                    class="checkbox-control" checked disabled /> | ||||
|             <span class="checkbox disabled-checkbox"></span> | ||||
|             <span class="caption truncated" id="url-preview"></span> | ||||
|           </label> | ||||
|         </li> | ||||
|         <li class="list-item" role="checkbox" aria-checked="true"> | ||||
|           <label class="detail-container disabled-container" for="ip">IP Address | ||||
|             <input type="checkbox" name="report-data" value="ip" id="ip" | ||||
|                    class="checkbox-control" checked disabled /> | ||||
|             <span class="checkbox disabled-checkbox"></span> | ||||
|           </label> | ||||
|         </li> | ||||
|         <li class="list-item" role="checkbox" aria-checked="true"> | ||||
|           <label class="detail-container" for="screenshot"> | ||||
|             <div class="data-preview"> | ||||
|               <a href="#" class="preview-link">Screenshot<span id="screenshot-preview"></span></a> | ||||
|             </div> | ||||
|             <input type="checkbox" name="report-data" value="screenshot" id="screenshot" | ||||
|                    class="checkbox-control" checked /> | ||||
|             <span class="checkbox"></span> | ||||
|           </label> | ||||
|         </li> | ||||
|         <li class="list-item" role="checkbox" aria-checked="true"> | ||||
|           <label class="detail-container" for="dom"> | ||||
|             <div class="data-preview" id="dom-preview-container"> | ||||
|               <a href="#" class="preview-link">DOM Content<span id="dom-preview"></span></a> | ||||
|             </div> | ||||
|             <input type="checkbox" name="report-data" value="dom" id="dom" | ||||
|                    class="checkbox-control" checked /> | ||||
|             <span class="checkbox"></span> | ||||
|             <span class="caption">Includes all HTML of the site</span> | ||||
|           </label> | ||||
|         </li> | ||||
|         <li class="list-item" role="checkbox" aria-checked="true"> | ||||
|           <label class="detail-container" for="referrer"> | ||||
|             <div class="data-preview"> | ||||
|               <a href="#" class="preview-link">Referrer Chain | ||||
|                 <span id="referrer-preview"> | ||||
|                   <ul class="referrer-bubble" id="referrer-urls"> | ||||
|                     <b>URLs that led to this site</b> | ||||
|                   </ul> | ||||
|                 </span> | ||||
|               </a> | ||||
|             </div> | ||||
|             <input type="checkbox" name="report-data" value="referrer" id="referrer" | ||||
|                    class="checkbox-control" checked /> | ||||
|             <span class="checkbox"></span> | ||||
|           </label> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|  | ||||
|     <div id="progress-container"> | ||||
|       <div class="progress-circular" id="progress"></div> | ||||
|       <button class="blue-button" id="report-site"><span>Send Report</span></button> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
|   <!-- Confirmation page --> | ||||
|   <div id="confirmation"> | ||||
|     <h1 class="header">Thanks for your report</h1> | ||||
|     <div class="wrapper"> | ||||
|       <div class="info-text"> | ||||
|         Thanks for helping make the web a safer place for everyone. | ||||
|       </div> | ||||
|     </div> | ||||
|     <img src="images/confirmation.png" | ||||
|          alt="Four people standing around a green checkmark" | ||||
|          id="confirmation-img"> | ||||
|     <button class="blue-button close-button"><span>Close</span></button> | ||||
|   </div> | ||||
|  | ||||
|   <!-- Error page --> | ||||
|   <div id="error"> | ||||
|     <h1 class="header">Uh-oh, something went wrong</h1> | ||||
|     <div class="wrapper"> | ||||
|       <i class="material-icons" id="info-icon">error_outline</i> | ||||
|       <div class="info-text"> | ||||
|         Try checking your network connection and re-clicking the extension icon. | ||||
|       </div> | ||||
|     </div> | ||||
|     <button class="blue-button close-button"><span>Close</span></button> | ||||
|   </div> | ||||
|  | ||||
|   <script src="popup_bin.js"></script> | ||||
| </body> | ||||
| </html> | ||||
| @ -0,0 +1,36 @@ | ||||
| javascript/closure/base.js | ||||
| javascript/public_suffix/publicsuffixpatterns.js | ||||
| third_party/javascript/closure/debug/error.js | ||||
| third_party/javascript/closure/dom/nodetype.js | ||||
| third_party/javascript/closure/asserts/asserts.js | ||||
| third_party/javascript/closure/dom/asserts.js | ||||
| third_party/javascript/closure/functions/functions.js | ||||
| third_party/javascript/closure/array/array.js | ||||
| third_party/javascript/closure/dom/htmlelement.js | ||||
| third_party/javascript/closure/dom/tagname.js | ||||
| third_party/javascript/closure/object/object.js | ||||
| third_party/javascript/closure/dom/tags.js | ||||
| third_party/javascript/closure/html/trustedtypes.js | ||||
| third_party/javascript/closure/string/typedstring.js | ||||
| third_party/javascript/closure/string/const.js | ||||
| third_party/javascript/closure/html/safescript.js | ||||
| third_party/javascript/closure/fs/url.js | ||||
| third_party/javascript/closure/fs/blob.js | ||||
| third_party/javascript/closure/i18n/bidi.js | ||||
| third_party/javascript/closure/html/trustedresourceurl.js | ||||
| third_party/javascript/closure/string/internal.js | ||||
| third_party/javascript/closure/html/safeurl.js | ||||
| third_party/javascript/closure/html/safestyle.js | ||||
| third_party/javascript/closure/html/safestylesheet.js | ||||
| third_party/javascript/closure/labs/useragent/util.js | ||||
| third_party/javascript/closure/labs/useragent/browser.js | ||||
| third_party/javascript/closure/html/safehtml.js | ||||
| third_party/javascript/closure/html/uncheckedconversions.js | ||||
| third_party/javascript/closure/dom/safe.js | ||||
| third_party/javascript/closure/string/string.js | ||||
| third_party/javascript/closure/structs/structs.js | ||||
| third_party/javascript/closure/structs/trie.js | ||||
| javascript/public_suffix/tld.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/alerts.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/popup.js | ||||
| third_party/javascript/suspicious_site_reporter/extension/popup_page.js | ||||
 toto
					toto