Release Vulpes OS 2.7-preview.22
This commit is contained in:
parent
200d1fb235
commit
a138f97877
294 changed files with 515786 additions and 187 deletions
68
tools/test-compact-phone.py
Normal file
68
tools/test-compact-phone.py
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Check compact Gaia Phone with a simulated modem, in the desktop test profile."""
|
||||
import importlib.util
|
||||
import json
|
||||
from pathlib import Path
|
||||
import time
|
||||
from marionette_client import Client
|
||||
|
||||
ROOT=Path(__file__).resolve().parents[1]
|
||||
spec=importlib.util.spec_from_file_location('probe',ROOT/'tools/probe-desktop.py')
|
||||
probe=importlib.util.module_from_spec(spec);spec.loader.exec_module(probe)
|
||||
with Client(2857) as client:
|
||||
probe.register(client)
|
||||
def ev(app,code):
|
||||
result=probe.evaluate(client,app,code,'/dialer/' if app=='communications' else '/')
|
||||
if 'error' in result:raise RuntimeError(result['error'])
|
||||
return result.get('value')
|
||||
def wait(app,code):
|
||||
for _ in range(100):
|
||||
result=ev(app,code)
|
||||
if result:return result
|
||||
time.sleep(.2)
|
||||
raise AssertionError((app,code))
|
||||
assert client.execute("return Services.env.get('VULPES_KEYPAD')==='1' && Services.env.get('VULPES_TEST_TELEPHONY')==='1';")
|
||||
client.execute("""const {Runtime}=ChromeUtils.importESModule('resource://vulpes/host/Runtime.sys.mjs');
|
||||
Runtime.compactOriginal=Runtime.platform.request.bind(Runtime.platform);
|
||||
Runtime.compactCalls=[];Runtime.compactDials=0;
|
||||
Runtime.platform.request=async(actor,app,op,params)=>{
|
||||
if(op==='calls')return Runtime.compactCalls;
|
||||
if(op==='dial'){
|
||||
Runtime.compactDials++;
|
||||
const {setTimeout}=ChromeUtils.importESModule('resource://gre/modules/Timer.sys.mjs');
|
||||
await new Promise(resolve=>setTimeout(resolve,700));
|
||||
Runtime.compactCalls=[{path:'/test/compact/1',number:params.number,state:'dialing'}];
|
||||
return {path:'/test/compact/1'};
|
||||
}
|
||||
if(op==='hangup'){Runtime.compactCalls=[];return {};}
|
||||
if(op==='callAudio')return {muted:false,speaker:false};
|
||||
return Runtime.compactOriginal(actor,app,op,params);
|
||||
};return true;""")
|
||||
try:
|
||||
ev('system','dispatchEvent(new CustomEvent("home"));return true;')
|
||||
wait('homescreen','return !!document.querySelector("gaia-app-icon");')
|
||||
ev('homescreen','document.querySelector("gaia-app-icon").click();return true;')
|
||||
wait('communications','return !!window.KeypadManager && document.readyState==="complete";')
|
||||
ev('communications','setTimeout(()=>location.reload(),50);return true;');time.sleep(1)
|
||||
wait('communications','return document.readyState==="complete" && !!window.CallHandler && !!window.VulpesPlatformDial;')
|
||||
ev('communications','dispatchEvent(new Event("resize"));return true;')
|
||||
layout=ev('communications','''const rect=id=>document.getElementById(id).getBoundingClientRect().toJSON();
|
||||
return {size:[innerWidth,innerHeight],bar:rect('keypad-callbar'),tabs:rect('option-recents'),
|
||||
keys:[...document.querySelectorAll('.keypad-key')].map(e=>({rect:e.getBoundingClientRect().toJSON(),overflow:e.scrollHeight>e.clientHeight || e.scrollWidth>e.clientWidth})),
|
||||
hidden:document.getElementById('views').classList.contains('hide-toolbar')};''')
|
||||
assert layout['size'][0]==240 and not layout['hidden'],layout
|
||||
assert layout['bar']['bottom']<=layout['tabs']['top']+1,layout
|
||||
assert all(not k['overflow'] and k['rect']['bottom']<=layout['bar']['top']+1 for k in layout['keys']),layout
|
||||
ev('communications','KeypadManager.updatePhoneNumber("5550100","begin",false);document.getElementById("keypad-callbar-call-action").click();document.getElementById("keypad-callbar-call-action").click();return true;')
|
||||
wait('callscreen','return navigator.mozTelephony.calls[0]?.state==="dialing";')
|
||||
assert client.execute("return ChromeUtils.importESModule('resource://vulpes/host/Runtime.sys.mjs').Runtime.compactDials;")==1
|
||||
client.execute("""const w=Services.wm.getMostRecentWindow('vulpes:host');
|
||||
const root=w.document.getElementById('system').browsingContext;
|
||||
function find(b){if(b.currentWindowGlobal?.documentURI.spec.startsWith('http://callscreen.localhost:'))return b;for(const c of b.children){const f=find(c);if(f)return f;}return null;}
|
||||
find(root).currentWindowGlobal.getActor('Keypad').sendAsyncMessage('Vulpes:Navigate',{key:'F4',repeat:false});return true;""")
|
||||
wait('system','return navigator.mozTelephony.calls.length===0;')
|
||||
result={'dialPadFits':True,'tabsRemainAfterResize':True,'repeatedPressSingleCall':True,'originalCallScreen':True,'redKeyHangup':True}
|
||||
(ROOT/'logs/compact-phone.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
print(json.dumps(result,indent=2))
|
||||
finally:
|
||||
client.execute("const {Runtime}=ChromeUtils.importESModule('resource://vulpes/host/Runtime.sys.mjs');Runtime.compactCalls=[];Runtime.platform.request=Runtime.compactOriginal;return true;")
|
||||
Loading…
Reference in a new issue