Index: chrome/browser/sync/resources/configure.html |
=================================================================== |
--- chrome/browser/sync/resources/configure.html (revision 61524) |
+++ chrome/browser/sync/resources/configure.html (working copy) |
@@ -5,12 +5,10 @@ |
body { |
line-height: 1.5em; |
background: #FFFFFF; |
- margin: 10px 15px; |
font-size: 11pt; |
} |
html[os='mac'] body { |
line-height: 1.5em; |
- margin: 15px 20px; |
background: #FFFFFF; |
} |
form { |
@@ -41,6 +39,63 @@ |
column-count: 2; |
column-gap: 10px; |
} |
+ |
+.sync-config-tab-contents-inactive { |
+ display: none; |
+} |
+.sync-config-tab-contents-active { |
+ display: block; |
+ margin: 10px 15px; |
+} |
+.sync-config-tabstrip { |
+ border-bottom: 1px solid gray; |
+ height: 25px; |
+ margin-bottom: 10px; |
+ padding-top: 10px; |
+ background-color: #DDD; |
+} |
+.sync-config-tab-active { |
+ background-color: white; |
+ border-top: 1px solid gray; |
+ border-left: 1px solid gray; |
+ border-right: 1px solid gray; |
+ border-top-left-radius: 5px 5px; |
+ border-top-right-radius: 5px 5px; |
+} |
+ |
+.sync-config-tab-active, |
+.sync-config-tab-inactive { |
+ float: left; |
+ height: 22px; |
+ padding-top: 3px; |
+ margin-left: 15px; |
+ width: 100px; |
+ text-align: center; |
+} |
+.sync-config-tab-active A, |
+.sync-config-tab-inactive A, |
+.sync-config-tab-active A:visited, |
+.sync-config-tab-inactive A:visited, |
+.sync-config-tab-active A:hover, |
+.sync-config-tab-inactive A:hover { |
+ color: black; |
+ text-decoration: none; |
+} |
+ |
+#sync-encryption-instructions { |
+ margin-bottom: 10px; |
+ line-height: 1.8em; |
+} |
+ |
+#sync-passphrase-warning { |
+ font-style: italic; |
+ line-height: 1.8em; |
+} |
+ |
+#encryption-tab-contents > .sync_item_show { |
+ margin-bottom: 5px; |
+} |
+ |
.sync-item-show { |
display: block; |
white-space: nowrap; |
@@ -96,14 +151,7 @@ |
bottom: 0px; |
margin-left: 20px; |
} |
-#throb { |
- background-image: url("../../../../app/resources/throbber.png"); |
- width: 16px; |
- height: 16px; |
- background-position: 0px; |
- margin: -3px 10px; |
- display: inline-block; |
-} |
+ |
input[type='button'], |
input[type='submit'] { |
min-width: 87px; |
@@ -117,9 +165,10 @@ |
</style> |
<script src="chrome://resources/js/cr.js"></script> |
<script> |
+ var currentTab; |
// Called once, when this html/js is loaded. |
- function initializeChooseDataTypesDialog() { |
+ function initializeConfigureDialog(args) { |
// Allow platform specific rules |
if (cr.isMac) { |
document.documentElement.setAttribute('os', 'mac'); |
@@ -127,20 +176,21 @@ |
document.documentElement.setAttribute('os', 'linux'); |
} |
- setInterval(advanceThrobber, 30); |
- var args = JSON.parse(chrome.dialogArguments); |
- setChooseDataTypesCheckboxes(args); |
+ if (args) { |
+ currentTab = args['initialTab']; |
+ switchToTab(currentTab); |
+ setCheckboxesAndErrors(args); |
+ } |
} |
function setCheckboxesAndErrors(args) { |
setChooseDataTypesCheckboxes(args); |
+ setEncryptionCheckboxes(args); |
setErrorState(args); |
} |
// Can be called multiple times. |
function setChooseDataTypesCheckboxes(args) { |
- setStateThrobbing(false); |
- |
// If this frame is on top, the focus should be on it, so pressing enter |
// submits this form. |
if (args.iframeToShow == 'choose_data_types') { |
@@ -192,6 +242,16 @@ |
} |
} |
+ function setEncryptionCheckboxes(args) { |
+ document.getElementById("usePassphraseCheckbox").checked = |
+ args["usePassphrase"]; |
+ |
+ // The passphrase, once set, cannot be unset. |
+ if (args["usePassphrase"]) { |
+ document.getElementById("usePassphraseCheckbox").disabled = true; |
+ } |
+ } |
+ |
function setErrorState(args) { |
if (!args.was_aborted) |
return; |
@@ -214,23 +274,6 @@ |
} |
} |
- function advanceThrobber() { |
- var throbber = document.getElementById('throb'); |
- throbber.style.backgroundPositionX = |
- ((parseInt(getComputedStyle(throbber).backgroundPositionX) - 16) % |
- 576) + 'px'; |
- } |
- |
- function setStateThrobbing(isThrobbing) { |
- var throbberContainer = document.getElementById('throbber_container'); |
- throbberContainer.style.visibility = isThrobbing ? "visible" : "hidden"; |
- |
- var okButton = document.getElementById('okButton'); |
- okButton.disabled = isThrobbing || templateData["was_aborted"]; |
- okButton.value = isThrobbing ? templateData['settingup'] : |
- templateData['ok']; |
- } |
- |
// Returns true if at least one data type is enabled and no data types are |
// checked. (If all data type checkboxes are disabled, it's because "keep |
// everything synced" is checked.) |
@@ -249,7 +292,7 @@ |
return atLeastOneEnabled && !atLeastOneChecked; |
} |
- function sendChooseDataTypesAndClose() { |
+ function sendConfiguration() { |
// Trying to submit, so hide previous errors. |
document.getElementById("aborted_text").className = "sync-error-hide"; |
document.getElementById("error_text").className = "sync-error-hide"; |
@@ -259,8 +302,6 @@ |
return; |
} |
- setStateThrobbing(true); |
- |
var f = document.getElementById("chooseDataTypesForm"); |
var syncAll = f.keepEverythingSyncedRadio.checked; |
// These values need to be kept in sync with where they are read in |
@@ -274,108 +315,153 @@ |
"syncAutofill": syncAll || f.autofillCheckbox.checked, |
"syncExtensions": syncAll || f.extensionsCheckbox.checked, |
"syncTypedUrls": syncAll || f.typedUrlsCheckbox.checked, |
- "syncApps": syncAll || f.appsCheckbox.checked |
+ "syncApps": syncAll || f.appsCheckbox.checked, |
+ "usePassphrase": document.getElementById("usePassphraseCheckbox").checked |
}); |
- chrome.send("ChooseDataTypes", [result]); |
+ chrome.send("Configure", [result]); |
} |
+ function switchToTab(newTab) { |
+ if (currentTab) { |
+ document.getElementById(currentTab + "-tab").className = |
+ "sync-config-tab-inactive"; |
+ document.getElementById(currentTab + "-tab-contents").className = |
+ "sync-config-tab-contents-inactive"; |
+ } |
+ |
+ document.getElementById(newTab + "-tab").className = |
+ "sync-config-tab-active"; |
+ document.getElementById(newTab + "-tab-contents").className = |
+ "sync-config-tab-contents-active"; |
+ |
+ currentTab = newTab; |
+ } |
+ |
</script> |
</head> |
<body i18n-values=".style.fontFamily:fontfamily" |
- onload="initializeChooseDataTypesDialog();"> |
-<form id="chooseDataTypesForm" |
- onSubmit="sendChooseDataTypesAndClose(); return false;"> |
+ onload="initializeConfigureDialog(JSON.parse(chrome.dialogArguments));"> |
+<form id="chooseDataTypesForm" onSubmit="sendConfiguration(); return false;"> |
- <div class="sync-header" |
- i18n-content="choosedatatypesheader"></div> |
- <div class="sync-choose_data_types_instructions" |
- i18n-content="choosedatatypesinstructions"></div> |
- <div class="sync-select-customization"> |
- <div class="sync-choice_radio"> |
- <input id="keepEverythingSyncedRadio" type="radio" name="syncChooseDataTypes" |
- onclick="setDataTypeCheckboxesEnabled(false)"> |
- <label for="keepEverythingSyncedRadio" i18n-content="keepeverythingsynced"> |
- </label> |
- </div> |
- <div id="chooseDataTypes" class="sync-choice_radio"> |
- <input id="chooseDataTypesRadio" type="radio" name="syncChooseDataTypes" |
- onclick="setDataTypeCheckboxesEnabled(true)"> |
- <label for="chooseDataTypesRadio" i18n-content="choosedatatypes" ></label> |
- <div id="chooseDataTypesBody"> |
- <div> |
- <!-- Apps --> |
- <div class="sync-item-show" id="appsItem"> |
- <input id="appsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="appsCheckboxLabel" name="dataTypeLabel" |
- for="appsCheckbox" i18n-content="apps" |
- i18n-values="title:apps"></label> |
- </div> |
- <!-- Autofill --> |
- <div class="sync-item-show" id="autofillItem"> |
- <input id="autofillCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="autofillCheckboxLabel" name="dataTypeLabel" |
- for="autofillCheckbox" i18n-content="autofill" |
- i18n-values="title:autofill"></label> |
- </div> |
- <!-- Bookmarks --> |
- <div class="sync-item-show" id="bookmarksItem"> |
- <input id="bookmarksCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="bookmarksCheckboxLabel" name="dataTypeLabel" |
- for="bookmarksCheckbox" i18n-content="bookmarks" |
- i18n-values="title:bookmarks"></label> |
- </div> |
- <!-- Extensions --> |
- <div class="sync-item-show" id="extensionsItem"> |
- <input id="extensionsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="extensionsCheckboxLabel" name="dataTypeLabel" |
- for="extensionsCheckbox" i18n-content="extensions" |
- i18n-values="title:extensions"></label> |
- </div> |
- <!-- Omnibox --> |
- <div class="sync-item-show" id="omniboxItem"> |
- <input id="typedUrlsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="typedUrlsCheckboxLabel" name="dataTypeLabel" |
- for="typedUrlsCheckbox" i18n-content="typedurls" |
- i18n-values="title:typedurls"></label> |
- </div> |
- <!-- Passwords --> |
- <div class="sync-item-show" id="passwordsItem"> |
- <input id="passwordsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="passwordsCheckboxLabel" name="dataTypeLabel" |
- for="passwordsCheckbox" i18n-content="passwords" |
- i18n-values="title:passwords"></label> |
- </div> |
- <!-- Preferences --> |
- <div class="sync-item-show" id="preferencesItem"> |
- <input id="preferencesCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="preferencesCheckboxLabel" name="dataTypeLabel" |
- for="preferencesCheckbox" i18n-content="preferences" |
- i18n-values="title:preferences"></label> |
- </div> |
- <!-- Themes --> |
- <div class="sync-item-show" id="themesItem"> |
- <input id="themesCheckbox" name="dataTypeCheckbox" type="checkbox"> |
- <label id="themesCheckboxLabel" name="dataTypeLabel" for="themesCheckbox" |
- i18n-content="themes" i18n-values="title:themes"></label> |
- </div> |
+ <div class="sync-config-tabstrip"> |
+ <div id="data-type-tab" class="sync-config-tab-inactive"> |
+ <a href="#" onclick="switchToTab('data-type'); return false;" |
+ i18n-content="dataTypes"></a> |
+ </div> |
+ <div id="encryption-tab" class="sync-config-tab-inactive"> |
+ <a href="#" onclick="switchToTab('encryption'); return false;" |
+ i18n-content="encryption"></a> |
+ </div> |
</div> |
+ <div id="data-type-tab-contents" class="sync-config-tab-contents-inactive"> |
+ |
+ <div class="sync-header" |
+ i18n-content="choosedatatypesheader"></div> |
+ <div class="sync-choose_data_types_instructions" |
+ i18n-content="choosedatatypesinstructions"></div> |
+ <div class="sync-select-customization"> |
+ <div class="sync-choice_radio"> |
+ <input id="keepEverythingSyncedRadio" type="radio" |
+ name="syncChooseDataTypes" |
+ onclick="setDataTypeCheckboxesEnabled(false)"> |
+ <label for="keepEverythingSyncedRadio" |
+ i18n-content="keepeverythingsynced"> |
+ </label> |
+ </div> |
+ <div id="chooseDataTypes" class="sync-choice_radio"> |
+ <input id="chooseDataTypesRadio" type="radio" name="syncChooseDataTypes" |
+ onclick="setDataTypeCheckboxesEnabled(true)"> |
+ <label for="chooseDataTypesRadio" i18n-content="choosedatatypes" ></label> |
+ <div id="chooseDataTypesBody"> |
+ <div> |
+ <!-- Apps --> |
+ <div class="sync-item-show" id="appsItem"> |
+ <input id="appsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="appsCheckboxLabel" name="dataTypeLabel" |
+ for="appsCheckbox" i18n-content="apps" |
+ i18n-values="title:apps"></label> |
+ </div> |
+ <!-- Autofill --> |
+ <div class="sync-item-show" id="autofillItem"> |
+ <input id="autofillCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="autofillCheckboxLabel" name="dataTypeLabel" |
+ for="autofillCheckbox" i18n-content="autofill" |
+ i18n-values="title:autofill"></label> |
+ </div> |
+ <!-- Bookmarks --> |
+ <div class="sync-item-show" id="bookmarksItem"> |
+ <input id="bookmarksCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="bookmarksCheckboxLabel" name="dataTypeLabel" |
+ for="bookmarksCheckbox" i18n-content="bookmarks" |
+ i18n-values="title:bookmarks"></label> |
+ </div> |
+ <!-- Extensions --> |
+ <div class="sync-item-show" id="extensionsItem"> |
+ <input id="extensionsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="extensionsCheckboxLabel" name="dataTypeLabel" |
+ for="extensionsCheckbox" i18n-content="extensions" |
+ i18n-values="title:extensions"></label> |
+ </div> |
+ <!-- Omnibox --> |
+ <div class="sync-item-show" id="omniboxItem"> |
+ <input id="typedUrlsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="typedUrlsCheckboxLabel" name="dataTypeLabel" |
+ for="typedUrlsCheckbox" i18n-content="typedurls" |
+ i18n-values="title:typedurls"></label> |
+ </div> |
+ <!-- Passwords --> |
+ <div class="sync-item-show" id="passwordsItem"> |
+ <input id="passwordsCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="passwordsCheckboxLabel" name="dataTypeLabel" |
+ for="passwordsCheckbox" i18n-content="passwords" |
+ i18n-values="title:passwords"></label> |
+ </div> |
+ <!-- Preferences --> |
+ <div class="sync-item-show" id="preferencesItem"> |
+ <input id="preferencesCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="preferencesCheckboxLabel" name="dataTypeLabel" |
+ for="preferencesCheckbox" i18n-content="preferences" |
+ i18n-values="title:preferences"></label> |
+ </div> |
+ <!-- Themes --> |
+ <div class="sync-item-show" id="themesItem"> |
+ <input id="themesCheckbox" name="dataTypeCheckbox" type="checkbox"> |
+ <label id="themesCheckboxLabel" name="dataTypeLabel" for="themesCheckbox" |
+ i18n-content="themes" i18n-values="title:themes"></label> |
+ </div> |
+ </div> |
+ </div> |
+ </div> |
+ <div class="sync-errors"> |
+ <span id="error_text" i18n-content="synczerodatatypeserror" |
+ class="sync-error-hide"></span> |
+ <span id="aborted_text" i18n-content="abortederror" |
+ class="sync-error-hide"></span> |
+ </div> |
+ </div> |
+ |
</div> |
- </div> |
- <div class="sync-errors"> |
- <span id="error_text" i18n-content="synczerodatatypeserror" |
- class="sync-error-hide"></span> |
- <span id="aborted_text" i18n-content="setupabortederror" |
- class="sync-error-hide"></span> |
- </div> |
- <div class="sync-footer"> |
- <span id="throbber_container" style="visibility:hidden"> |
- <span id="throb"></span> |
- </span> |
- <input id="okButton" type="submit" i18n-values="value:ok" /> |
- <input id="cancelButton" type="button" i18n-values="value:cancel" |
- onclick='chrome.send("DialogClose", [""])' /> |
- </div> |
-</div> |
+ <div id="encryption-tab-contents" class="sync-config-tab-contents-inactive"> |
+ <div id="sync-encryption-instructions" |
+ i18n-content="encryptionInstructions"></div> |
+ |
+ <div class="sync-item-show" id="usePassphrase"> |
+ <input id="usePassphraseCheckbox" name="usePassphraseCheckbox" |
+ type="checkbox" /> |
+ <label id="usePassphraseLabel" name="usePassphraseLabel" |
+ for="usePassphraseCheckbox" i18n-content="usePassphraseLabel"> |
+ </label> |
+ </div> |
+ |
+ <div id="sync-passphrase-warning" i18n-content="passphraseWarning"> |
+ </div> |
+ </div> |
+ |
+ <div class="sync-footer"> |
+ <input id="okButton" type="submit" i18n-values="value:ok" /> |
+ <input id="cancelButton" type="button" i18n-values="value:cancel" |
+ onclick='chrome.send("DialogClose", [""])' /> |
+ </div> |
</form> |
</body> |
</html> |
Property changes on: chrome/browser/sync/resources/configure.html |
___________________________________________________________________ |
Added: svn:mergeinfo |