| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script> | 4 <link href="popup.css" rel="stylesheet" type="text/css"> |
| 5 var pref = chrome.experimental.contentSettings.global.thirdPartyCookiesAllowed; | 5 <script src="popup.js"></script> |
| 6 </head> |
| 7 <body> |
| 6 | 8 |
| 7 /** | 9 <div id="container"> |
| 8 * Returns whether the |levelOfControl| means that the extension can change the | 10 <input type="checkbox" id="regularValue" /> |
| 9 * preference value. | 11 Allow third-party sites to set cookies |
| 10 * | 12 <div id="incognito"> |
| 11 * @param levelOfControl{string} | 13 <input type="checkbox" id="useSeparateIncognitoSettings" /> |
| 12 */ | 14 Use separate setting for incognito mode: |
| 13 function settingIsControllable(levelOfControl) { | 15 <br> |
| 14 return (levelOfControl == "controllable_by_this_extension" || | 16 <input type="checkbox" id="incognitoValue" disabled="disabled"/> |
| 15 levelOfControl == "controlled_by_this_extension"); | 17 Allow third-party sites to set cookies in incognito sessions |
| 16 } | 18 </div> |
| 17 | 19 <div id="incognito-forbidden"> |
| 18 /** | 20 Select "Allow in incognito" to access incognito preferences |
| 19 * Updates the UI to reflect the state of the preference. | 21 </div> |
| 20 * | |
| 21 * @param settings{object} A settings object, as returned from |get()| or the | |
| 22 * |onchange| event. | |
| 23 */ | |
| 24 function updateUI(settings) { | |
| 25 var disableUI = !settingIsControllable(settings.levelOfControl); | |
| 26 document.getElementById("regularValue").disabled = disableUI; | |
| 27 document.getElementById("useSeparateIncognitoSettings").disabled = disableUI; | |
| 28 if (settings.hasOwnProperty('incognitoSpecific')) { | |
| 29 var hasIncognitoValue = settings.incognitoSpecific; | |
| 30 document.getElementById("useSeparateIncognitoSettings").checked = | |
| 31 hasIncognitoValue; | |
| 32 document.getElementById("incognitoValue").disabled = | |
| 33 disableUI || !hasIncognitoValue; | |
| 34 document.getElementById("incognitoValue").checked = settings.value; | |
| 35 } else { | |
| 36 document.getElementById("regularValue").checked = settings.value; | |
| 37 } | |
| 38 } | |
| 39 | |
| 40 /** | |
| 41 * Wrapper for |updateUI| which is used as callback for the |get()| method and | |
| 42 * which logs the result. | |
| 43 * If there was an error getting the preference, does nothing. | |
| 44 * | |
| 45 * @param settings{object} A settings object, as returned from |get()|. | |
| 46 */ | |
| 47 function updateUIFromGet(settings) { | |
| 48 if (settings) { | |
| 49 console.log('pref.get result:' + JSON.stringify(settings)); | |
| 50 updateUI(settings); | |
| 51 } | |
| 52 } | |
| 53 | |
| 54 /** | |
| 55 * Wrapper for |updateUI| which is used as handler for the |onchange| event | |
| 56 * and which logs the result. | |
| 57 * | |
| 58 * @param settings{object} A settings object, as returned from the |onchange| | |
| 59 * event. | |
| 60 */ | |
| 61 function updateUIFromOnChange(settings) { | |
| 62 console.log('pref.onChange event:' + JSON.stringify(settings)); | |
| 63 updateUI(settings); | |
| 64 } | |
| 65 | |
| 66 /* | |
| 67 * Initializes the UI. | |
| 68 */ | |
| 69 function init() { | |
| 70 chrome.extension.isAllowedIncognitoAccess(function(allowed) { | |
| 71 if (allowed) { | |
| 72 pref.get({'incognito': true}, updateUIFromGet); | |
| 73 document.getElementById("incognito").style.display = "block"; | |
| 74 document.getElementById("incognito-forbidden").style.display = "none"; | |
| 75 } | |
| 76 }); | |
| 77 pref.get({}, updateUIFromGet); | |
| 78 pref.onChange.addListener(updateUIFromOnChange); | |
| 79 } | |
| 80 | |
| 81 /** | |
| 82 * Called from the UI to change the preference value. | |
| 83 * | |
| 84 * @param enabled{boolean} The new preference value. | |
| 85 * @param incognito{boolean} Whether the value is specific to incognito mode. | |
| 86 */ | |
| 87 function setPrefValue(enabled, incognito) { | |
| 88 var scope = incognito ? 'incognito_session_only' : 'regular'; | |
| 89 pref.set({'value': enabled, 'scope': scope}); | |
| 90 } | |
| 91 | |
| 92 /** | |
| 93 * Called from the UI to change whether to use separate settings for | |
| 94 * incognito mode. | |
| 95 * | |
| 96 * @param value{boolean} whether to use separate settings for | |
| 97 * incognito mode. | |
| 98 */ | |
| 99 function setUseSeparateIncognitoSettings(value) { | |
| 100 if (!value) { | |
| 101 pref.clear({'incognito': true}); | |
| 102 } else { | |
| 103 // Explicitly set the value for incognito mode. | |
| 104 pref.get({'incognito': true}, function(settings) { | |
| 105 pref.set({'incognito': true, 'value': settings.value}); | |
| 106 }); | |
| 107 } | |
| 108 document.getElementById("incognitoValue").disabled = !value; | |
| 109 } | |
| 110 | |
| 111 </script> | |
| 112 </head> | |
| 113 <body onload="init()"> | |
| 114 | |
| 115 <div style="width: 300px"> | |
| 116 <input type="checkbox" onclick="setPrefValue(this.checked)" id="regularValue" />
Allow third-party sites to set cookies | |
| 117 | |
| 118 <div id="incognito" style="display:none"> | |
| 119 <input type="checkbox" onclick="setUseSeparateIncognitoSettings(this.checked)" i
d="useSeparateIncognitoSettings" /> Use separate setting for incognito mode: | |
| 120 <br> | |
| 121 <input type="checkbox" onclick="setPrefValue(this.checked, true)" id="incognitoV
alue" disabled="disabled"/> Enable referrers in incognito sessions | |
| 122 </div> | |
| 123 <div id="incognito-forbidden"> | |
| 124 Select "Allow in incognito" to access incognito preferences | |
| 125 </div> | |
| 126 </div> | 22 </div> |
| 127 | 23 |
| 128 </body> | 24 </body> |
| 129 </html> | 25 </html> |
| OLD | NEW |