зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1721178 - Add targeting trigger for successful captive portal login r=dmose
Differential Revision: https://phabricator.services.mozilla.com/D120730
This commit is contained in:
Родитель
b11b819e89
Коммит
aa77a57273
|
@ -585,6 +585,44 @@ this.ASRouterTriggerListeners = new Map([
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
"captivePortalLogin",
|
||||||
|
{
|
||||||
|
id: "captivePortalLogin",
|
||||||
|
_initialized: false,
|
||||||
|
_triggerHandler: null,
|
||||||
|
|
||||||
|
init(triggerHandler) {
|
||||||
|
if (!this._initialized) {
|
||||||
|
Services.obs.addObserver(this, "captive-portal-login-success");
|
||||||
|
this._initialized = true;
|
||||||
|
}
|
||||||
|
this._triggerHandler = triggerHandler;
|
||||||
|
},
|
||||||
|
|
||||||
|
observe(aSubject, aTopic, aData) {
|
||||||
|
switch (aTopic) {
|
||||||
|
case "captive-portal-login-success":
|
||||||
|
const browser = Services.wm.getMostRecentBrowserWindow();
|
||||||
|
if (browser) {
|
||||||
|
this._triggerHandler(browser.gBrowser.selectedBrowser, {
|
||||||
|
id: this.id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
uninit() {
|
||||||
|
if (this._initialized) {
|
||||||
|
this._triggerHandler = null;
|
||||||
|
this._initialized = false;
|
||||||
|
Services.obs.removeObserver(this, "captive-portal-login-success");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const EXPORTED_SYMBOLS = ["ASRouterTriggerListeners"];
|
const EXPORTED_SYMBOLS = ["ASRouterTriggerListeners"];
|
||||||
|
|
|
@ -63,3 +63,22 @@ add_task(async function test_openURL_visit_counter_withPattern() {
|
||||||
"Third call should have count 2 for http://example.com"
|
"Third call should have count 2 for http://example.com"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
add_task(async function test_captivePortalLogin() {
|
||||||
|
const stub = sinon.stub();
|
||||||
|
const captivePortalTrigger = ASRouterTriggerListeners.get(
|
||||||
|
"captivePortalLogin"
|
||||||
|
);
|
||||||
|
|
||||||
|
captivePortalTrigger.init(stub);
|
||||||
|
|
||||||
|
Services.obs.notifyObservers(this, "captive-portal-login-success", {});
|
||||||
|
|
||||||
|
Assert.ok(stub.called, "Called after login event");
|
||||||
|
|
||||||
|
captivePortalTrigger.uninit();
|
||||||
|
|
||||||
|
Services.obs.notifyObservers(this, "captive-portal-login-success", {});
|
||||||
|
|
||||||
|
Assert.equal(stub.callCount, 1, "Not called after uninit");
|
||||||
|
});
|
||||||
|
|
|
@ -185,6 +185,18 @@
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"required": ["id"],
|
"required": ["id"],
|
||||||
"description": "Happens when starting the browser or navigating to about:home/newtab"
|
"description": "Happens when starting the browser or navigating to about:home/newtab"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["captivePortalLogin"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": ["id"],
|
||||||
|
"description": "Happens when the user successfully goes through a captive portal authentication flow."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,3 +119,8 @@ On the newtab/homepage it reports the `source` as `newtab`.
|
||||||
let source = "newtab" | undefined;
|
let source = "newtab" | undefined;
|
||||||
let willShowDefaultPrompt = boolean;
|
let willShowDefaultPrompt = boolean;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `captivePortalLogin`
|
||||||
|
|
||||||
|
Happens when the user successfully goes through a captive portal authentication flow.
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче