Skip to content
This repository has been archived by the owner on Aug 4, 2022. It is now read-only.

Commit

Permalink
Merge autoland to mozilla-central. a=merge
Browse files Browse the repository at this point in the history
  • Loading branch information
CosminSabou committed Jul 11, 2019
2 parents f32d525 + e9a2e02 commit 310346b
Show file tree
Hide file tree
Showing 408 changed files with 1,433 additions and 1,119 deletions.
6 changes: 4 additions & 2 deletions browser/base/content/browser-sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -359,12 +359,14 @@ var gSync = {
const mainWindowEl = document.documentElement;

// The Firefox Account toolbar currently handles 3 different states for
// users. The default `not_configured state shows an empty avatar, `unverified`
// users. The default `not_configured` state shows an empty avatar, `unverified`
// state shows an avatar with an email icon and the `verified` state will show
// the users custom profile image or a filled avatar.
let stateValue = "not_configured";
document.getElementById("PanelUI-fxa").removeAttribute("title");
if (
if (state.status === UIState.STATUS_NOT_CONFIGURED) {
mainWindowEl.style.removeProperty("--avatar-image-url");
} else if (
state.status === UIState.STATUS_LOGIN_FAILED ||
state.status === UIState.STATUS_NOT_VERIFIED
) {
Expand Down
1 change: 1 addition & 0 deletions browser/components/BrowserGlue.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ let LEGACY_ACTORS = {
},
messages: [
"AboutLogins:AllLogins",
"AboutLogins:UpdateBreaches",
"AboutLogins:LoginAdded",
"AboutLogins:LoginModified",
"AboutLogins:LoginRemoved",
Expand Down
3 changes: 3 additions & 0 deletions browser/components/aboutlogins/AboutLoginsChild.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ class AboutLoginsChild extends ActorChild {
case "AboutLogins:AllLogins":
this.sendToContent("AllLogins", message.data);
break;
case "AboutLogins:UpdateBreaches":
this.sendToContent("UpdateBreaches", message.data);
break;
case "AboutLogins:LoginAdded":
this.sendToContent("LoginAdded", message.data);
break;
Expand Down
32 changes: 30 additions & 2 deletions browser/components/aboutlogins/AboutLoginsParent.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ ChromeUtils.defineModuleGetter(
"MigrationUtils",
"resource:///modules/MigrationUtils.jsm"
);
ChromeUtils.defineModuleGetter(
this,
"RemoteSettings",
"resource://services-settings/remote-settings.js"
);
ChromeUtils.defineModuleGetter(
this,
"Services",
Expand Down Expand Up @@ -177,9 +182,12 @@ var AboutLoginsParent = {
this._subscribers.add(message.target);

let messageManager = message.target.messageManager;
const logins = await this.getAllLogins();
messageManager.sendAsyncMessage("AboutLogins:AllLogins", logins);
const breachesByLoginGUID = await this.getBreachesForLogins(logins);
messageManager.sendAsyncMessage(
"AboutLogins:AllLogins",
await this.getAllLogins()
"AboutLogins:UpdateBreaches",
breachesByLoginGUID
);
break;
}
Expand Down Expand Up @@ -365,4 +373,24 @@ var AboutLoginsParent = {
throw e;
}
},

async getBreachesForLogins(logins) {
const breaches = await RemoteSettings("fxmonitor-breaches").get();
const breachHostMap = new Map();
for (const breach of breaches) {
breachHostMap.set(breach.Domain, breach);
}
const breachesByLoginGUID = new Map();
for (const login of logins) {
const loginURI = Services.io.newURI(login.origin);
const breach = breachHostMap.get(loginURI.host) || false;
if (
breach &&
login.timePasswordChanged < new Date(breach.BreachDate).getTime()
) {
breachesByLoginGUID.set(login.guid, breach);
}
}
return breachesByLoginGUID;
},
};
14 changes: 7 additions & 7 deletions browser/components/aboutlogins/content/aboutLogins.html
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ <h2 class="title">
<span class="login-item-title"></span>
<span class="new-login-title" data-l10n-id="login-item-new-login-title"></span>
</h2>
<button class="edit-button alternate-button" data-l10n-id="login-item-edit-button"></button>
<button class="delete-button alternate-button" data-l10n-id="login-item-delete-button"></button>
<button class="edit-button ghost-button" data-l10n-id="login-item-edit-button"></button>
<button class="delete-button ghost-button" data-l10n-id="login-item-delete-button"></button>
</div>
<form>
<div class="detail-row">
Expand Down Expand Up @@ -143,12 +143,12 @@ <h2 class="title">
<link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
<link rel="stylesheet" href="chrome://browser/content/aboutlogins/common.css">
<link rel="stylesheet" href="chrome://browser/content/aboutlogins/components/menu-button.css">
<button class="menu-button alternate-button" data-l10n-id="menu"></button>
<button class="menu-button ghost-button" data-l10n-id="menu"></button>
<ul class="menu" role="menu" hidden>
<button role="menuitem" class="menuitem-button menuitem-import alternate-button" hidden data-supported-platforms="Win32" data-event-name="AboutLoginsImport" data-l10n-id="menu-menuitem-import"></button>
<button role="menuitem" class="menuitem-button menuitem-preferences alternate-button" data-event-name="AboutLoginsOpenPreferences" data-l10n-id="menu-menuitem-preferences"></button>
<button role="menuitem" class="menuitem-button menuitem-feedback alternate-button" data-event-name="AboutLoginsOpenFeedback" data-l10n-id="menu-menuitem-feedback"></button>
<button role="menuitem" class="menuitem-button menuitem-faq alternate-button" data-event-name="AboutLoginsOpenFAQ" data-l10n-id="menu-menuitem-faq"></button>
<button role="menuitem" class="menuitem-button menuitem-import ghost-button" hidden data-supported-platforms="Win32" data-event-name="AboutLoginsImport" data-l10n-id="menu-menuitem-import"></button>
<button role="menuitem" class="menuitem-button menuitem-preferences ghost-button" data-event-name="AboutLoginsOpenPreferences" data-l10n-id="menu-menuitem-preferences"></button>
<button role="menuitem" class="menuitem-button menuitem-feedback ghost-button" data-event-name="AboutLoginsOpenFeedback" data-l10n-id="menu-menuitem-feedback"></button>
<button role="menuitem" class="menuitem-button menuitem-faq ghost-button" data-event-name="AboutLoginsOpenFAQ" data-l10n-id="menu-menuitem-faq"></button>
</ul>
</template>
</body>
Expand Down
4 changes: 4 additions & 0 deletions browser/components/aboutlogins/content/aboutLogins.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ window.addEventListener("AboutLoginsChromeToContent", event => {
gElements.loginList.setLogins(event.detail.value);
break;
}
case "UpdateBreaches": {
gElements.loginList.updateBreaches(event.detail.value);
break;
}
case "LoginAdded": {
gElements.loginList.loginAdded(event.detail.value);
gElements.loginItem.loginAdded(event.detail.value);
Expand Down
12 changes: 0 additions & 12 deletions browser/components/aboutlogins/content/common.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,3 @@
[hidden] {
display: none !important;
}

.alternate-button {
background-color: transparent;
}

.alternate-button:hover {
background-color: var(--in-content-button-background-hover);
}

.alternate-button:hover:active {
background-color: var(--in-content-button-background-active);
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ ol {
background-color: var(--in-content-box-background-hover);
}

.login-list-item.breached {
border-inline-start-color: var(--in-content-border-invalid);
}

.title {
font-weight: bold;
}
Expand Down
15 changes: 14 additions & 1 deletion browser/components/aboutlogins/content/components/login-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,12 @@ export default class LoginList extends HTMLElement {
if (login.guid == this._selectedGuid) {
this._setListItemAsSelected(listItem);
}

if (
this._breachesByLoginGUID &&
this._breachesByLoginGUID.has(login.guid)
) {
listItem.classList.add("breached");
}
if (!visibleLogins.includes(login.guid)) {
listItem.hidden = true;
}
Expand Down Expand Up @@ -212,6 +217,14 @@ export default class LoginList extends HTMLElement {
}
}

/**
* @param {Map} breachesByLoginGUID A Map of breaches by login GUIDs used for displaying breached login indicators.
*/
updateBreaches(breachesByLoginGUID) {
this._breachesByLoginGUID = breachesByLoginGUID;
this.render();
}

/**
* @param {login} login A login that was added to storage.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ add_task(async function() {
// This is due to a fetch request that has the default user context. Since
// the fetch request omits credentials, the user context doesn't matter.
"addons",
// about:credits will initiate network request.
// about:credits and about:logins will initiate network request.
"credits",
"logins",
// about:telemetry will fetch Telemetry asynchronously and takes longer,
// so we skip this for now.
"telemetry",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ add_task(async function test_aboutURL() {
let aboutURLs = [];

// List of about: URLs that will initiate network requests.
let networkURLs = ["credits"];
let networkURLs = ["credits", "logins"];

for (let cid in Cc) {
let result = cid.match(
Expand Down
Loading

0 comments on commit 310346b

Please sign in to comment.