quickwin 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +7 -7
- package/README.md +7 -7
- package/constants.ts +1063 -0
- package/enum_map.d.ts +129 -0
- package/examples/PdfCanvas.js +2 -2
- package/examples/PdfCanvas.tsx +3 -2
- package/examples/{execd.js → execd/main.js} +563 -122
- package/examples/execd/tray.js +192 -0
- package/examples/{execd_worker.js → execd/worker.js} +7 -7
- package/examples/pdf_preview2.js +46 -46
- package/examples/pdf_preview2.ts +55 -54
- package/examples/pdf_viewer.js +34 -19
- package/examples/pdf_viewer.tsx +6 -5
- package/examples/test_gallery.js +35 -20
- package/examples/test_gallery.tsx +9 -8
- package/examples/test_react_lazy.js +34 -19
- package/examples/test_react_lazy.tsx +7 -6
- package/examples/test_react_listbox.js +34 -19
- package/examples/test_react_listbox.tsx +8 -7
- package/examples/test_root_window.js +34 -19
- package/examples/test_root_window.tsx +5 -5
- package/examples/test_tab.js +34 -19
- package/examples/test_tab.tsx +7 -6
- package/examples/tray_demo.js +8 -8
- package/examples/tray_demo.tsx +9 -8
- package/lib/dumpRects.js +2 -2
- package/lib/dumpRects.ts +3 -2
- package/lib/fetch.js +15 -15
- package/lib/fetch.ts +16 -15
- package/lib/ffi/bind.js +3 -3
- package/lib/ffi/bind.ts +3 -3
- package/lib/http-server.js +4 -4
- package/lib/http-server.ts +5 -4
- package/lib/react-qw/components/Button.js +2 -2
- package/lib/react-qw/components/CheckBox.js +4 -4
- package/lib/react-qw/components/ComboBox.js +10 -10
- package/lib/react-qw/components/DateTimePicker.js +12 -12
- package/lib/react-qw/components/Input.js +7 -7
- package/lib/react-qw/components/Link.js +4 -4
- package/lib/react-qw/components/ListBox.js +12 -12
- package/lib/react-qw/components/ListView.js +35 -35
- package/lib/react-qw/components/PathPicker.js +3 -3
- package/lib/react-qw/components/ProgressBar.js +4 -4
- package/lib/react-qw/components/RadioButton.js +4 -4
- package/lib/react-qw/components/ScrollView.js +28 -28
- package/lib/react-qw/components/Slider.js +11 -11
- package/lib/react-qw/components/Tab.js +10 -10
- package/lib/react-qw/components/Tooltip.js +8 -8
- package/lib/react-qw/components/TreeView.js +20 -20
- package/lib/react-qw/index.js +5 -5
- package/lib/react-qw/index.ts +6 -5
- package/lib/react-qw/props.js +4 -4
- package/lib/react-qw/props.ts +5 -4
- package/lib/react-qw/reconciler.js +10 -10
- package/lib/react-qw/reconciler.ts +11 -10
- package/lib/text-measure.js +3 -3
- package/lib/text-measure.ts +4 -3
- package/lib/websocket.js +17 -17
- package/lib/websocket.ts +18 -17
- package/lib/windows/advapi32.js +7 -7
- package/lib/windows/advapi32.ts +7 -7
- package/lib/windows/gdi32.js +16 -16
- package/lib/windows/gdi32.ts +16 -16
- package/lib/windows/kernel32.js +41 -2
- package/lib/windows/kernel32.ts +45 -2
- package/lib/windows/shell32.js +24 -3
- package/lib/windows/shell32.ts +27 -4
- package/lib/windows/structs.js +54 -0
- package/lib/windows/structs.ts +63 -1
- package/lib/windows/user32.js +18 -6
- package/lib/windows/user32.ts +18 -6
- package/lib/windows/winspool.js +3 -3
- package/lib/windows/winspool.ts +3 -3
- package/package.json +4 -3
- package/quickwin.d.ts +32 -10
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/test_ffi_bind.js +7 -7
- package/test/test_ffi_bind.ts +8 -8
- package/test/test_ffi_struct.js +2 -2
- package/test/test_ffi_struct.ts +3 -3
- package/test/test_ffi_windows.js +1 -1
- package/test/test_ffi_windows.ts +1 -1
- package/test/test_files.js +7 -7
- package/test/test_files.ts +8 -8
- package/test/test_gdi_draw.js +51 -51
- package/test/test_gdi_draw.ts +57 -57
- package/test/test_http_server.js +3 -3
- package/test/test_http_server.ts +4 -3
- package/test/test_ipv6.js +3 -3
- package/test/test_ipv6.ts +4 -3
- package/test/test_net_event.js +3 -3
- package/test/test_net_event.ts +4 -3
- package/test/test_printer.js +4 -4
- package/test/test_printer.ts +5 -5
- package/test/test_react_complex.js +36 -21
- package/test/test_react_counter.js +34 -19
- package/test/test_react_flex.js +36 -21
- package/test/test_react_hidden.js +34 -19
- package/test/test_react_listview_link.js +35 -20
- package/test/test_react_notify.js +52 -37
- package/test/test_react_render.js +34 -19
- package/test/test_registry.js +6 -6
- package/test/test_registry.ts +8 -8
- package/test/test_wolfssl_read.js +8 -8
- package/test/test_wolfssl_read.ts +9 -8
- package/examples/execd.tsx +0 -798
- package/examples/execd_worker.ts +0 -127
- package/quickwin_const.d.ts +0 -1063
|
@@ -16562,6 +16562,14 @@ var LVCOLUMNW_DECL = {
|
|
|
16562
16562
|
cxIdeal: "i32"
|
|
16563
16563
|
};
|
|
16564
16564
|
var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
|
|
16565
|
+
var NOTIFYICONIDENTIFIER_DECL = {
|
|
16566
|
+
"#": "struct",
|
|
16567
|
+
cbSize: "u32",
|
|
16568
|
+
hWnd: "<HWND>ptr",
|
|
16569
|
+
uID: "u32",
|
|
16570
|
+
guidItem: "u32[4]"
|
|
16571
|
+
};
|
|
16572
|
+
var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
|
|
16565
16573
|
|
|
16566
16574
|
// _build/lib/windows/user32.js
|
|
16567
16575
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
@@ -16631,14 +16639,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16631
16639
|
gui.ShowWindow(
|
|
16632
16640
|
hwnd,
|
|
16633
16641
|
newProps.hidden ? 0 : 5
|
|
16634
|
-
/*
|
|
16642
|
+
/* ShowWindowCmd.SHOW */
|
|
16635
16643
|
);
|
|
16636
16644
|
}
|
|
16637
16645
|
if ("visible" in newProps) {
|
|
16638
16646
|
gui.ShowWindow(
|
|
16639
16647
|
hwnd,
|
|
16640
16648
|
newProps.visible ? 5 : 0
|
|
16641
|
-
/*
|
|
16649
|
+
/* ShowWindowCmd.HIDE */
|
|
16642
16650
|
);
|
|
16643
16651
|
}
|
|
16644
16652
|
}
|
|
@@ -16734,7 +16742,7 @@ function measureText(hdc, text, maxWidth) {
|
|
|
16734
16742
|
-1,
|
|
16735
16743
|
r.ptr,
|
|
16736
16744
|
1024
|
|
16737
|
-
/*
|
|
16745
|
+
/* DrawTextFlag.CALCRECT */
|
|
16738
16746
|
);
|
|
16739
16747
|
const { right, bottom } = RECT.decode(r);
|
|
16740
16748
|
return { width: right, height: bottom };
|
|
@@ -16782,7 +16790,7 @@ function setupWindowProc(instance, hwnd) {
|
|
|
16782
16790
|
const oldProc = GetWindowLongPtr(
|
|
16783
16791
|
hwnd,
|
|
16784
16792
|
-4
|
|
16785
|
-
/*
|
|
16793
|
+
/* Gwlp.WNDPROC */
|
|
16786
16794
|
);
|
|
16787
16795
|
instancesByHwnd.set(hwnd, instance);
|
|
16788
16796
|
gui3.SetWindowProc(hwnd, (hwnd2, msg, wParam, lParam) => {
|
|
@@ -16870,7 +16878,7 @@ function runFlexLayout(inst) {
|
|
|
16870
16878
|
r.width * scaleFactor,
|
|
16871
16879
|
r.height * scaleFactor,
|
|
16872
16880
|
64
|
|
16873
|
-
/*
|
|
16881
|
+
/* SetWindowPosFlag.SWP_SHOWWINDOW */
|
|
16874
16882
|
);
|
|
16875
16883
|
InvalidateRect(child2.hwnd, NULL, 1);
|
|
16876
16884
|
child2.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
|
|
@@ -17026,7 +17034,7 @@ var hostConfig = {
|
|
|
17026
17034
|
gui3.ShowWindow(
|
|
17027
17035
|
instance.hwnd,
|
|
17028
17036
|
0
|
|
17029
|
-
/*
|
|
17037
|
+
/* ShowWindowCmd.HIDE */
|
|
17030
17038
|
);
|
|
17031
17039
|
},
|
|
17032
17040
|
hideTextInstance(instance) {
|
|
@@ -17034,7 +17042,7 @@ var hostConfig = {
|
|
|
17034
17042
|
gui3.ShowWindow(
|
|
17035
17043
|
instance.hwnd,
|
|
17036
17044
|
0
|
|
17037
|
-
/*
|
|
17045
|
+
/* ShowWindowCmd.HIDE */
|
|
17038
17046
|
);
|
|
17039
17047
|
},
|
|
17040
17048
|
unhideInstance(instance, _props) {
|
|
@@ -17042,7 +17050,7 @@ var hostConfig = {
|
|
|
17042
17050
|
gui3.ShowWindow(
|
|
17043
17051
|
instance.hwnd,
|
|
17044
17052
|
5
|
|
17045
|
-
/*
|
|
17053
|
+
/* ShowWindowCmd.SHOW */
|
|
17046
17054
|
);
|
|
17047
17055
|
},
|
|
17048
17056
|
unhideTextInstance(instance, _text) {
|
|
@@ -17050,7 +17058,7 @@ var hostConfig = {
|
|
|
17050
17058
|
gui3.ShowWindow(
|
|
17051
17059
|
instance.hwnd,
|
|
17052
17060
|
5
|
|
17053
|
-
/*
|
|
17061
|
+
/* ShowWindowCmd.SHOW */
|
|
17054
17062
|
);
|
|
17055
17063
|
},
|
|
17056
17064
|
shouldSetTextContent(_type, props) {
|
|
@@ -17478,7 +17486,7 @@ function getCellFont(hwnd, style) {
|
|
|
17478
17486
|
...base,
|
|
17479
17487
|
...style.bold ? {
|
|
17480
17488
|
lfWeight: 700
|
|
17481
|
-
/*
|
|
17489
|
+
/* FontWeight.BOLD */
|
|
17482
17490
|
} : {},
|
|
17483
17491
|
...style.italic ? { lfItalic: 1 } : {},
|
|
17484
17492
|
...style.underline ? { lfUnderline: 1 } : {}
|
|
@@ -17600,7 +17608,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns: c
|
|
|
17600
17608
|
4150,
|
|
17601
17609
|
0,
|
|
17602
17610
|
32 | 1 | 65536
|
|
17603
|
-
/*
|
|
17611
|
+
/* LvExStyle.DOUBLEBUFFER */
|
|
17604
17612
|
);
|
|
17605
17613
|
const n = columns2.length;
|
|
17606
17614
|
for (let j = 0; j < n; j++) {
|
|
@@ -17645,7 +17653,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns: c
|
|
|
17645
17653
|
4126,
|
|
17646
17654
|
j,
|
|
17647
17655
|
-2
|
|
17648
|
-
/*
|
|
17656
|
+
/* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
|
|
17649
17657
|
);
|
|
17650
17658
|
}
|
|
17651
17659
|
}
|
|
@@ -17787,7 +17795,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17787
17795
|
natW,
|
|
17788
17796
|
natH,
|
|
17789
17797
|
4
|
|
17790
|
-
/*
|
|
17798
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17791
17799
|
);
|
|
17792
17800
|
forceFlexLayout(content);
|
|
17793
17801
|
if (natW > svW) {
|
|
@@ -17826,7 +17834,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17826
17834
|
0,
|
|
17827
17835
|
0,
|
|
17828
17836
|
1 | 4
|
|
17829
|
-
/*
|
|
17837
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17830
17838
|
);
|
|
17831
17839
|
gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
|
|
17832
17840
|
}
|
|
@@ -17892,7 +17900,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17892
17900
|
handleScroll(
|
|
17893
17901
|
e,
|
|
17894
17902
|
1
|
|
17895
|
-
/*
|
|
17903
|
+
/* ScrollBar.VERT */
|
|
17896
17904
|
);
|
|
17897
17905
|
return 0;
|
|
17898
17906
|
}
|
|
@@ -17900,7 +17908,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17900
17908
|
handleScroll(
|
|
17901
17909
|
e,
|
|
17902
17910
|
0
|
|
17903
|
-
/*
|
|
17911
|
+
/* ScrollBar.HORZ */
|
|
17904
17912
|
);
|
|
17905
17913
|
return 0;
|
|
17906
17914
|
}
|
|
@@ -18064,7 +18072,7 @@ function deleteAllItems(hTree) {
|
|
|
18064
18072
|
4353,
|
|
18065
18073
|
1,
|
|
18066
18074
|
-65536
|
|
18067
|
-
/*
|
|
18075
|
+
/* TvInsertAfter.ROOT */
|
|
18068
18076
|
);
|
|
18069
18077
|
}
|
|
18070
18078
|
var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: data2, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
|
|
@@ -18096,7 +18104,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: dat
|
|
|
18096
18104
|
4396,
|
|
18097
18105
|
0,
|
|
18098
18106
|
4
|
|
18099
|
-
/*
|
|
18107
|
+
/* TvExStyle.DOUBLEBUFFER */
|
|
18100
18108
|
);
|
|
18101
18109
|
}, []);
|
|
18102
18110
|
(0, import_react16.useEffect)(() => {
|
|
@@ -18138,9 +18146,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
|
18138
18146
|
var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18139
18147
|
|
|
18140
18148
|
// _build/lib/windows/shell32.js
|
|
18141
|
-
var b4 = (name, sig) => bind("shell32.dll", name, sig);
|
|
18149
|
+
var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18142
18150
|
var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18143
18151
|
var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18152
|
+
var Shell_NotifyIconGetRect = (() => {
|
|
18153
|
+
try {
|
|
18154
|
+
return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18155
|
+
} catch {
|
|
18156
|
+
return null;
|
|
18157
|
+
}
|
|
18158
|
+
})();
|
|
18144
18159
|
|
|
18145
18160
|
// _build/lib/windows/ole32.js
|
|
18146
18161
|
var b5 = (name, sig) => bind("ole32.dll", name, sig);
|
|
@@ -18392,7 +18407,7 @@ function runAll() {
|
|
|
18392
18407
|
const lvNM = (code) => nm(HDR + 128, code);
|
|
18393
18408
|
let m = lvNM(
|
|
18394
18409
|
-2
|
|
18395
|
-
/*
|
|
18410
|
+
/* LvNotifyCode.CLICK */
|
|
18396
18411
|
);
|
|
18397
18412
|
m.dv.setInt32(HDR, 1, true);
|
|
18398
18413
|
m.dv.setInt32(HDR + 4, 2, true);
|
|
@@ -18400,7 +18415,7 @@ function runAll() {
|
|
|
18400
18415
|
expect("LV click(item=1,sub=2) \u89E6\u53D1 onCellClick", lvClicks.slice(), ["b@1"]);
|
|
18401
18416
|
m = lvNM(
|
|
18402
18417
|
-2
|
|
18403
|
-
/*
|
|
18418
|
+
/* LvNotifyCode.CLICK */
|
|
18404
18419
|
);
|
|
18405
18420
|
m.dv.setInt32(HDR, 0, true);
|
|
18406
18421
|
m.dv.setInt32(HDR + 4, 0, true);
|
|
@@ -18408,7 +18423,7 @@ function runAll() {
|
|
|
18408
18423
|
expect("LV click(sub=0, \u8BE5\u5217\u65E0 onCellClick) \u4E0D\u89E6\u53D1", lvClicks.slice(), ["b@1"]);
|
|
18409
18424
|
m = lvNM(
|
|
18410
18425
|
-2
|
|
18411
|
-
/*
|
|
18426
|
+
/* LvNotifyCode.CLICK */
|
|
18412
18427
|
);
|
|
18413
18428
|
m.dv.setInt32(HDR, 9, true);
|
|
18414
18429
|
m.dv.setInt32(HDR + 4, 2, true);
|
|
@@ -18416,7 +18431,7 @@ function runAll() {
|
|
|
18416
18431
|
expect("LV click(item \u8D8A\u754C) \u4E0D\u89E6\u53D1", lvClicks.slice(), ["b@1"]);
|
|
18417
18432
|
m = lvNM(
|
|
18418
18433
|
-2
|
|
18419
|
-
/*
|
|
18434
|
+
/* LvNotifyCode.CLICK */
|
|
18420
18435
|
);
|
|
18421
18436
|
m.dv.setInt32(HDR, 2, true);
|
|
18422
18437
|
m.dv.setInt32(HDR + 4, 2, true);
|
|
@@ -18425,21 +18440,21 @@ function runAll() {
|
|
|
18425
18440
|
const SEL = 2;
|
|
18426
18441
|
m = lvNM(
|
|
18427
18442
|
-100
|
|
18428
|
-
/*
|
|
18443
|
+
/* LvNotifyCode.ITEMCHANGING */
|
|
18429
18444
|
);
|
|
18430
18445
|
m.dv.setUint32(HDR + 8, SEL, true);
|
|
18431
18446
|
m.dv.setUint32(HDR + 12, 0, true);
|
|
18432
18447
|
expect("LV ITEMCHANGING \u9009\u4E2D\u4F4D\u53D8\u5316 \u2192 \u62E6\u622A(1)", notify(lvW, m.b), 1);
|
|
18433
18448
|
m = lvNM(
|
|
18434
18449
|
-100
|
|
18435
|
-
/*
|
|
18450
|
+
/* LvNotifyCode.ITEMCHANGING */
|
|
18436
18451
|
);
|
|
18437
18452
|
m.dv.setUint32(HDR + 8, 1, true);
|
|
18438
18453
|
m.dv.setUint32(HDR + 12, 0, true);
|
|
18439
18454
|
expect("LV ITEMCHANGING \u9009\u4E2D\u4F4D\u4E0D\u53D8 \u2192 \u653E\u884C(0)", notify(lvW, m.b), 0);
|
|
18440
18455
|
m = lvNM(
|
|
18441
18456
|
-100
|
|
18442
|
-
/*
|
|
18457
|
+
/* LvNotifyCode.ITEMCHANGING */
|
|
18443
18458
|
);
|
|
18444
18459
|
m.dv.setUint32(HDR + 8, 2147483648 | SEL, true);
|
|
18445
18460
|
m.dv.setUint32(HDR + 12, 2147483648, true);
|
|
@@ -18452,7 +18467,7 @@ function runAll() {
|
|
|
18452
18467
|
const x = nm(
|
|
18453
18468
|
cdEnd + 64,
|
|
18454
18469
|
-12
|
|
18455
|
-
/*
|
|
18470
|
+
/* LvNotifyCode.CUSTOMDRAW */
|
|
18456
18471
|
);
|
|
18457
18472
|
x.dv.setUint32(cdStage, stage, true);
|
|
18458
18473
|
setPtr(x.dv, cdHdc, memDc);
|
|
@@ -18464,26 +18479,26 @@ function runAll() {
|
|
|
18464
18479
|
"LV CUSTOMDRAW PREPAINT \u2192 NOTIFYITEMDRAW",
|
|
18465
18480
|
notify(lvW, cd(1, 0, 0).b),
|
|
18466
18481
|
32
|
|
18467
|
-
/*
|
|
18482
|
+
/* CustomDrawFlag.NOTIFYITEMDRAW */
|
|
18468
18483
|
);
|
|
18469
18484
|
expect(
|
|
18470
18485
|
"LV CUSTOMDRAW ITEMPREPAINT \u2192 NOTIFYSUBITEMDRAW",
|
|
18471
18486
|
notify(lvW, cd(65537, 0, 0).b),
|
|
18472
18487
|
32
|
|
18473
|
-
/*
|
|
18488
|
+
/* CustomDrawFlag.NOTIFYSUBITEMDRAW */
|
|
18474
18489
|
);
|
|
18475
18490
|
expect(
|
|
18476
18491
|
"LV CUSTOMDRAW SUBITEMPREPAINT(\u65E0\u6837\u5F0F\u5217) \u2192 DODEFAULT",
|
|
18477
18492
|
notify(lvW, cd(196609, 1, 0).b),
|
|
18478
18493
|
0
|
|
18479
|
-
/*
|
|
18494
|
+
/* CustomDrawFlag.DODEFAULT */
|
|
18480
18495
|
);
|
|
18481
18496
|
const sub = cd(196609, 1, 2);
|
|
18482
18497
|
expect(
|
|
18483
18498
|
"LV CUSTOMDRAW SUBITEMPREPAINT(\u6837\u5F0F\u5217, \u5E26\u5B57\u4F53) \u2192 NEWFONT",
|
|
18484
18499
|
notify(lvW, sub.b),
|
|
18485
18500
|
2
|
|
18486
|
-
/*
|
|
18501
|
+
/* CustomDrawFlag.NEWFONT */
|
|
18487
18502
|
);
|
|
18488
18503
|
expect("LV CUSTOMDRAW \u5199\u56DE clrText", sub.dv.getUint32(lvText, true), 16711680);
|
|
18489
18504
|
expect("LV CUSTOMDRAW \u5199\u56DE clrTextBk", sub.dv.getUint32(lvBk, true), 1122867);
|
|
@@ -18498,18 +18513,18 @@ function runAll() {
|
|
|
18498
18513
|
};
|
|
18499
18514
|
notify(linkW, lk(
|
|
18500
18515
|
-2
|
|
18501
|
-
/*
|
|
18516
|
+
/* SysLinkNotifyCode.CLICK */
|
|
18502
18517
|
).b);
|
|
18503
18518
|
notify(linkW, lk(
|
|
18504
18519
|
-4
|
|
18505
|
-
/*
|
|
18520
|
+
/* SysLinkNotifyCode.RETURN */
|
|
18506
18521
|
).b);
|
|
18507
18522
|
expect("Link CLICK/RETURN \u2192 onClick(url)", linkUrls.slice(), [URL, URL]);
|
|
18508
18523
|
const dt = (flags) => {
|
|
18509
18524
|
const x = nm(
|
|
18510
18525
|
HDR + 4 + 16 + 8,
|
|
18511
18526
|
-759
|
|
18512
|
-
/*
|
|
18527
|
+
/* DtNotifyCode.DATETIMECHANGE */
|
|
18513
18528
|
);
|
|
18514
18529
|
x.dv.setUint32(HDR, flags, true);
|
|
18515
18530
|
const s = HDR + 4;
|
|
@@ -18525,11 +18540,11 @@ function runAll() {
|
|
|
18525
18540
|
};
|
|
18526
18541
|
notify(dtpW, dt(
|
|
18527
18542
|
0
|
|
18528
|
-
/*
|
|
18543
|
+
/* DtFlag.GDT_VALID */
|
|
18529
18544
|
).b);
|
|
18530
18545
|
notify(dtpW, dt(
|
|
18531
18546
|
1
|
|
18532
|
-
/*
|
|
18547
|
+
/* DtFlag.GDT_NONE */
|
|
18533
18548
|
).b);
|
|
18534
18549
|
expect("DTP DATETIMECHANGE \u2192 onChange(Date | null)", dtpVals.slice(), [new Date(2024, 1, 29, 13, 45, 59).getTime(), null]);
|
|
18535
18550
|
const back = new ArrayBuffer(16);
|
|
@@ -18549,7 +18564,7 @@ function runAll() {
|
|
|
18549
18564
|
notify(tabW, nm(
|
|
18550
18565
|
HDR + 8,
|
|
18551
18566
|
-552
|
|
18552
|
-
/*
|
|
18567
|
+
/* TcNotifyCode.SELCHANGING */
|
|
18553
18568
|
).b);
|
|
18554
18569
|
expect("Tab SELCHANGING \u2192 onChange(1)", tabSel.slice(), [1]);
|
|
18555
18570
|
const tv = child(tvW);
|
|
@@ -16560,6 +16560,14 @@ var LVCOLUMNW_DECL = {
|
|
|
16560
16560
|
cxIdeal: "i32"
|
|
16561
16561
|
};
|
|
16562
16562
|
var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
|
|
16563
|
+
var NOTIFYICONIDENTIFIER_DECL = {
|
|
16564
|
+
"#": "struct",
|
|
16565
|
+
cbSize: "u32",
|
|
16566
|
+
hWnd: "<HWND>ptr",
|
|
16567
|
+
uID: "u32",
|
|
16568
|
+
guidItem: "u32[4]"
|
|
16569
|
+
};
|
|
16570
|
+
var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
|
|
16563
16571
|
|
|
16564
16572
|
// _build/lib/windows/user32.js
|
|
16565
16573
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
@@ -16625,14 +16633,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16625
16633
|
gui.ShowWindow(
|
|
16626
16634
|
hwnd2,
|
|
16627
16635
|
newProps.hidden ? 0 : 5
|
|
16628
|
-
/*
|
|
16636
|
+
/* ShowWindowCmd.SHOW */
|
|
16629
16637
|
);
|
|
16630
16638
|
}
|
|
16631
16639
|
if ("visible" in newProps) {
|
|
16632
16640
|
gui.ShowWindow(
|
|
16633
16641
|
hwnd2,
|
|
16634
16642
|
newProps.visible ? 5 : 0
|
|
16635
|
-
/*
|
|
16643
|
+
/* ShowWindowCmd.HIDE */
|
|
16636
16644
|
);
|
|
16637
16645
|
}
|
|
16638
16646
|
}
|
|
@@ -16728,7 +16736,7 @@ function measureText(hdc, text, maxWidth) {
|
|
|
16728
16736
|
-1,
|
|
16729
16737
|
r.ptr,
|
|
16730
16738
|
1024
|
|
16731
|
-
/*
|
|
16739
|
+
/* DrawTextFlag.CALCRECT */
|
|
16732
16740
|
);
|
|
16733
16741
|
const { right, bottom } = RECT.decode(r);
|
|
16734
16742
|
return { width: right, height: bottom };
|
|
@@ -16776,7 +16784,7 @@ function setupWindowProc(instance, hwnd2) {
|
|
|
16776
16784
|
const oldProc = GetWindowLongPtr(
|
|
16777
16785
|
hwnd2,
|
|
16778
16786
|
-4
|
|
16779
|
-
/*
|
|
16787
|
+
/* Gwlp.WNDPROC */
|
|
16780
16788
|
);
|
|
16781
16789
|
instancesByHwnd.set(hwnd2, instance);
|
|
16782
16790
|
gui3.SetWindowProc(hwnd2, (hwnd3, msg, wParam, lParam) => {
|
|
@@ -16864,7 +16872,7 @@ function runFlexLayout(inst) {
|
|
|
16864
16872
|
r.width * scaleFactor,
|
|
16865
16873
|
r.height * scaleFactor,
|
|
16866
16874
|
64
|
|
16867
|
-
/*
|
|
16875
|
+
/* SetWindowPosFlag.SWP_SHOWWINDOW */
|
|
16868
16876
|
);
|
|
16869
16877
|
InvalidateRect(child.hwnd, NULL, 1);
|
|
16870
16878
|
child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
|
|
@@ -17020,7 +17028,7 @@ var hostConfig = {
|
|
|
17020
17028
|
gui3.ShowWindow(
|
|
17021
17029
|
instance.hwnd,
|
|
17022
17030
|
0
|
|
17023
|
-
/*
|
|
17031
|
+
/* ShowWindowCmd.HIDE */
|
|
17024
17032
|
);
|
|
17025
17033
|
},
|
|
17026
17034
|
hideTextInstance(instance) {
|
|
@@ -17028,7 +17036,7 @@ var hostConfig = {
|
|
|
17028
17036
|
gui3.ShowWindow(
|
|
17029
17037
|
instance.hwnd,
|
|
17030
17038
|
0
|
|
17031
|
-
/*
|
|
17039
|
+
/* ShowWindowCmd.HIDE */
|
|
17032
17040
|
);
|
|
17033
17041
|
},
|
|
17034
17042
|
unhideInstance(instance, _props) {
|
|
@@ -17036,7 +17044,7 @@ var hostConfig = {
|
|
|
17036
17044
|
gui3.ShowWindow(
|
|
17037
17045
|
instance.hwnd,
|
|
17038
17046
|
5
|
|
17039
|
-
/*
|
|
17047
|
+
/* ShowWindowCmd.SHOW */
|
|
17040
17048
|
);
|
|
17041
17049
|
},
|
|
17042
17050
|
unhideTextInstance(instance, _text) {
|
|
@@ -17044,7 +17052,7 @@ var hostConfig = {
|
|
|
17044
17052
|
gui3.ShowWindow(
|
|
17045
17053
|
instance.hwnd,
|
|
17046
17054
|
5
|
|
17047
|
-
/*
|
|
17055
|
+
/* ShowWindowCmd.SHOW */
|
|
17048
17056
|
);
|
|
17049
17057
|
},
|
|
17050
17058
|
shouldSetTextContent(_type, props) {
|
|
@@ -17472,7 +17480,7 @@ function getCellFont(hwnd2, style) {
|
|
|
17472
17480
|
...base,
|
|
17473
17481
|
...style.bold ? {
|
|
17474
17482
|
lfWeight: 700
|
|
17475
|
-
/*
|
|
17483
|
+
/* FontWeight.BOLD */
|
|
17476
17484
|
} : {},
|
|
17477
17485
|
...style.italic ? { lfItalic: 1 } : {},
|
|
17478
17486
|
...style.underline ? { lfUnderline: 1 } : {}
|
|
@@ -17594,7 +17602,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17594
17602
|
4150,
|
|
17595
17603
|
0,
|
|
17596
17604
|
32 | 1 | 65536
|
|
17597
|
-
/*
|
|
17605
|
+
/* LvExStyle.DOUBLEBUFFER */
|
|
17598
17606
|
);
|
|
17599
17607
|
const n = columns.length;
|
|
17600
17608
|
for (let j = 0; j < n; j++) {
|
|
@@ -17639,7 +17647,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17639
17647
|
4126,
|
|
17640
17648
|
j,
|
|
17641
17649
|
-2
|
|
17642
|
-
/*
|
|
17650
|
+
/* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
|
|
17643
17651
|
);
|
|
17644
17652
|
}
|
|
17645
17653
|
}
|
|
@@ -17781,7 +17789,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17781
17789
|
natW,
|
|
17782
17790
|
natH,
|
|
17783
17791
|
4
|
|
17784
|
-
/*
|
|
17792
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17785
17793
|
);
|
|
17786
17794
|
forceFlexLayout(content);
|
|
17787
17795
|
if (natW > svW) {
|
|
@@ -17820,7 +17828,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17820
17828
|
0,
|
|
17821
17829
|
0,
|
|
17822
17830
|
1 | 4
|
|
17823
|
-
/*
|
|
17831
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17824
17832
|
);
|
|
17825
17833
|
gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
|
|
17826
17834
|
}
|
|
@@ -17886,7 +17894,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17886
17894
|
handleScroll(
|
|
17887
17895
|
e,
|
|
17888
17896
|
1
|
|
17889
|
-
/*
|
|
17897
|
+
/* ScrollBar.VERT */
|
|
17890
17898
|
);
|
|
17891
17899
|
return 0;
|
|
17892
17900
|
}
|
|
@@ -17894,7 +17902,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17894
17902
|
handleScroll(
|
|
17895
17903
|
e,
|
|
17896
17904
|
0
|
|
17897
|
-
/*
|
|
17905
|
+
/* ScrollBar.HORZ */
|
|
17898
17906
|
);
|
|
17899
17907
|
return 0;
|
|
17900
17908
|
}
|
|
@@ -18058,7 +18066,7 @@ function deleteAllItems(hTree) {
|
|
|
18058
18066
|
4353,
|
|
18059
18067
|
1,
|
|
18060
18068
|
-65536
|
|
18061
|
-
/*
|
|
18069
|
+
/* TvInsertAfter.ROOT */
|
|
18062
18070
|
);
|
|
18063
18071
|
}
|
|
18064
18072
|
var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
|
|
@@ -18090,7 +18098,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18090
18098
|
4396,
|
|
18091
18099
|
0,
|
|
18092
18100
|
4
|
|
18093
|
-
/*
|
|
18101
|
+
/* TvExStyle.DOUBLEBUFFER */
|
|
18094
18102
|
);
|
|
18095
18103
|
}, []);
|
|
18096
18104
|
(0, import_react16.useEffect)(() => {
|
|
@@ -18132,9 +18140,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
|
18132
18140
|
var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18133
18141
|
|
|
18134
18142
|
// _build/lib/windows/shell32.js
|
|
18135
|
-
var b4 = (name, sig) => bind("shell32.dll", name, sig);
|
|
18143
|
+
var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18136
18144
|
var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18137
18145
|
var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18146
|
+
var Shell_NotifyIconGetRect = (() => {
|
|
18147
|
+
try {
|
|
18148
|
+
return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18149
|
+
} catch {
|
|
18150
|
+
return null;
|
|
18151
|
+
}
|
|
18152
|
+
})();
|
|
18138
18153
|
|
|
18139
18154
|
// _build/lib/windows/ole32.js
|
|
18140
18155
|
var b5 = (name, sig) => bind("ole32.dll", name, sig);
|
package/test/test_registry.js
CHANGED
|
@@ -38,7 +38,7 @@ export const suite = {
|
|
|
38
38
|
const phk = new PtrArrayBuffer(8);
|
|
39
39
|
// hKey 位双来源:预定义键常量(HKEY_CURRENT_USER = 0x80000001 的 i32 形)
|
|
40
40
|
// 或真实句柄——裸 <>ptr 位收两者;符号/零扩展语义由本调用实测检验
|
|
41
|
-
const rcCreate = RegCreateKeyEx(-2147483647 /*
|
|
41
|
+
const rcCreate = RegCreateKeyEx(-2147483647 /* HKey.CURRENT_USER */, KEY, 0, NULL, 0, 983103 /* RegAccess.ALL_ACCESS */, NULL, phk, NULL);
|
|
42
42
|
t.check('create key = ERROR_SUCCESS', 0, rcCreate);
|
|
43
43
|
if (rcCreate !== 0)
|
|
44
44
|
return; // 基座失败,后续无意义
|
|
@@ -46,7 +46,7 @@ export const suite = {
|
|
|
46
46
|
t.checkTrue(`key handle non-null (${hkey})`, hkey !== 0);
|
|
47
47
|
t.section('RegSetValueEx + RegQueryValueEx: REG_SZ roundtrip');
|
|
48
48
|
const data = wbuf(MSG);
|
|
49
|
-
t.check('set REG_SZ = ERROR_SUCCESS', 0, RegSetValueEx(hkey, 'greeting', 0, 1 /*
|
|
49
|
+
t.check('set REG_SZ = ERROR_SUCCESS', 0, RegSetValueEx(hkey, 'greeting', 0, 1 /* RegType.SZ */, data, (MSG.length + 1) * 2));
|
|
50
50
|
const pType = new PtrArrayBuffer(4);
|
|
51
51
|
const pCb = new PtrArrayBuffer(4);
|
|
52
52
|
const pData = new PtrArrayBuffer(64);
|
|
@@ -61,14 +61,14 @@ export const suite = {
|
|
|
61
61
|
t.check('probe size', (MSG.length + 1) * 2, new DataView(pCb).getUint32(0, true));
|
|
62
62
|
t.section('RegOpenKeyEx: reopen + missings');
|
|
63
63
|
const phk2 = new PtrArrayBuffer(8);
|
|
64
|
-
t.check('reopen = ERROR_SUCCESS', 0, RegOpenKeyEx(-2147483647 /*
|
|
64
|
+
t.check('reopen = ERROR_SUCCESS', 0, RegOpenKeyEx(-2147483647 /* HKey.CURRENT_USER */, KEY, 0, 131097 /* RegAccess.READ */, phk2));
|
|
65
65
|
const hkey2 = readPtr(new DataView(phk2), 0);
|
|
66
66
|
t.check('missing value → ERROR_FILE_NOT_FOUND', 2, RegQueryValueEx(hkey2, 'no-such-value', NULL, NULL, NULL, NULL));
|
|
67
|
-
t.check('missing key → ERROR_FILE_NOT_FOUND', 2, RegOpenKeyEx(-2147483647 /*
|
|
67
|
+
t.check('missing key → ERROR_FILE_NOT_FOUND', 2, RegOpenKeyEx(-2147483647 /* HKey.CURRENT_USER */, KEY + 'X', 0, 131097 /* RegAccess.READ */, new PtrArrayBuffer(8)));
|
|
68
68
|
RegCloseKey(hkey2);
|
|
69
69
|
t.section('RegDeleteKey + RegCloseKey: cleanup');
|
|
70
|
-
t.check('delete key = ERROR_SUCCESS', 0, RegDeleteKey(-2147483647 /*
|
|
70
|
+
t.check('delete key = ERROR_SUCCESS', 0, RegDeleteKey(-2147483647 /* HKey.CURRENT_USER */, KEY));
|
|
71
71
|
t.check('close = ERROR_SUCCESS', 0, RegCloseKey(hkey));
|
|
72
|
-
t.check('open deleted → ERROR_FILE_NOT_FOUND', 2, RegOpenKeyEx(-2147483647 /*
|
|
72
|
+
t.check('open deleted → ERROR_FILE_NOT_FOUND', 2, RegOpenKeyEx(-2147483647 /* HKey.CURRENT_USER */, KEY, 0, 131097 /* RegAccess.READ */, new PtrArrayBuffer(8)));
|
|
73
73
|
},
|
|
74
74
|
};
|
package/test/test_registry.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as os from 'os'
|
|
2
|
-
import * as gui from 'gui'
|
|
3
2
|
import { NULL, PtrArrayBuffer } from '../lib/ffi/ctype.js'
|
|
4
3
|
import {
|
|
5
4
|
RegCloseKey, RegCreateKeyEx, RegDeleteKey, RegOpenKeyEx,
|
|
6
5
|
RegQueryValueEx, RegSetValueEx,
|
|
7
6
|
} from '../lib/windows/advapi32.js'
|
|
8
7
|
import { Tester } from './test_helper.js'
|
|
8
|
+
import { HKey, RegAccess, RegType } from '../constants'
|
|
9
9
|
|
|
10
10
|
// 跨架构读指针宽句柄(ia32 4B / x64 8B)—— 照 test_ffi.ts 的 readPtr 先例
|
|
11
11
|
function readPtr(dv: DataView, offset: number): number {
|
|
@@ -45,8 +45,8 @@ export const suite = {
|
|
|
45
45
|
const phk = new PtrArrayBuffer(8)
|
|
46
46
|
// hKey 位双来源:预定义键常量(HKEY_CURRENT_USER = 0x80000001 的 i32 形)
|
|
47
47
|
// 或真实句柄——裸 <>ptr 位收两者;符号/零扩展语义由本调用实测检验
|
|
48
|
-
const rcCreate = RegCreateKeyEx(
|
|
49
|
-
|
|
48
|
+
const rcCreate = RegCreateKeyEx(HKey.CURRENT_USER, KEY, 0, NULL, 0,
|
|
49
|
+
RegAccess.ALL_ACCESS, NULL, phk, NULL)
|
|
50
50
|
t.check('create key = ERROR_SUCCESS', 0, rcCreate)
|
|
51
51
|
if (rcCreate !== 0) return // 基座失败,后续无意义
|
|
52
52
|
const hkey = readPtr(new DataView(phk), 0)
|
|
@@ -55,7 +55,7 @@ export const suite = {
|
|
|
55
55
|
t.section('RegSetValueEx + RegQueryValueEx: REG_SZ roundtrip')
|
|
56
56
|
const data = wbuf(MSG)
|
|
57
57
|
t.check('set REG_SZ = ERROR_SUCCESS', 0,
|
|
58
|
-
RegSetValueEx(hkey, 'greeting', 0,
|
|
58
|
+
RegSetValueEx(hkey, 'greeting', 0, RegType.SZ, data, (MSG.length + 1) * 2))
|
|
59
59
|
const pType = new PtrArrayBuffer(4)
|
|
60
60
|
const pCb = new PtrArrayBuffer(4)
|
|
61
61
|
const pData = new PtrArrayBuffer(64)
|
|
@@ -75,21 +75,21 @@ export const suite = {
|
|
|
75
75
|
t.section('RegOpenKeyEx: reopen + missings')
|
|
76
76
|
const phk2 = new PtrArrayBuffer(8)
|
|
77
77
|
t.check('reopen = ERROR_SUCCESS', 0,
|
|
78
|
-
RegOpenKeyEx(
|
|
78
|
+
RegOpenKeyEx(HKey.CURRENT_USER, KEY, 0, RegAccess.READ, phk2))
|
|
79
79
|
const hkey2 = readPtr(new DataView(phk2), 0)
|
|
80
80
|
t.check('missing value → ERROR_FILE_NOT_FOUND', 2,
|
|
81
81
|
RegQueryValueEx(hkey2, 'no-such-value', NULL, NULL, NULL, NULL))
|
|
82
82
|
t.check('missing key → ERROR_FILE_NOT_FOUND', 2,
|
|
83
|
-
RegOpenKeyEx(
|
|
83
|
+
RegOpenKeyEx(HKey.CURRENT_USER, KEY + 'X', 0, RegAccess.READ,
|
|
84
84
|
new PtrArrayBuffer(8)))
|
|
85
85
|
RegCloseKey(hkey2)
|
|
86
86
|
|
|
87
87
|
t.section('RegDeleteKey + RegCloseKey: cleanup')
|
|
88
88
|
t.check('delete key = ERROR_SUCCESS', 0,
|
|
89
|
-
RegDeleteKey(
|
|
89
|
+
RegDeleteKey(HKey.CURRENT_USER, KEY))
|
|
90
90
|
t.check('close = ERROR_SUCCESS', 0, RegCloseKey(hkey))
|
|
91
91
|
t.check('open deleted → ERROR_FILE_NOT_FOUND', 2,
|
|
92
|
-
RegOpenKeyEx(
|
|
92
|
+
RegOpenKeyEx(HKey.CURRENT_USER, KEY, 0, RegAccess.READ,
|
|
93
93
|
new PtrArrayBuffer(8)))
|
|
94
94
|
},
|
|
95
95
|
}
|
|
@@ -115,7 +115,7 @@ export const suite = {
|
|
|
115
115
|
sock.set_on_event(s, (event) => {
|
|
116
116
|
if (done)
|
|
117
117
|
return;
|
|
118
|
-
if (event.lNetworkEvents & 16 /*
|
|
118
|
+
if (event.lNetworkEvents & 16 /* FdEvent.FD_CONNECT */) {
|
|
119
119
|
if (event.iErrorCode[0] !== 0) {
|
|
120
120
|
assert('connect error code 0', false);
|
|
121
121
|
finish();
|
|
@@ -129,7 +129,7 @@ export const suite = {
|
|
|
129
129
|
finish();
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
|
-
wolfssl.wolfSSL_CTX_set_verify(ctx, 0 /*
|
|
132
|
+
wolfssl.wolfSSL_CTX_set_verify(ctx, 0 /* VerifyMode.SSL_VERIFY_NONE */);
|
|
133
133
|
ssl = wolfssl.wolfSSL_new(ctx);
|
|
134
134
|
if (!ssl) {
|
|
135
135
|
assert('SSL_new', false);
|
|
@@ -137,11 +137,11 @@ export const suite = {
|
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
139
|
wolfssl.wolfSSL_set_fd(ssl, sock.get_fd(s));
|
|
140
|
-
wolfssl.wolfSSL_UseSNI(ssl, 0 /*
|
|
140
|
+
wolfssl.wolfSSL_UseSNI(ssl, 0 /* SniType.WOLFSSL_SNI_HOST_NAME */, 'localhost');
|
|
141
141
|
// kick handshake immediately (FD_WRITE may not re-fire)
|
|
142
142
|
{
|
|
143
143
|
const ret = wolfssl.wolfSSL_connect(ssl);
|
|
144
|
-
if (ret === 1 /*
|
|
144
|
+
if (ret === 1 /* ReturnCode.SSL_SUCCESS */) {
|
|
145
145
|
handshakeDone = true;
|
|
146
146
|
sendReq();
|
|
147
147
|
}
|
|
@@ -154,13 +154,13 @@ export const suite = {
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
if ((event.lNetworkEvents & 1 /*
|
|
158
|
-
(event.lNetworkEvents & 2 /*
|
|
157
|
+
if ((event.lNetworkEvents & 1 /* FdEvent.FD_READ */) ||
|
|
158
|
+
(event.lNetworkEvents & 2 /* FdEvent.FD_WRITE */)) {
|
|
159
159
|
if (!ssl)
|
|
160
160
|
return;
|
|
161
161
|
if (!handshakeDone) {
|
|
162
162
|
const ret = wolfssl.wolfSSL_connect(ssl);
|
|
163
|
-
if (ret === 1 /*
|
|
163
|
+
if (ret === 1 /* ReturnCode.SSL_SUCCESS */) {
|
|
164
164
|
handshakeDone = true;
|
|
165
165
|
sendReq();
|
|
166
166
|
}
|
|
@@ -176,7 +176,7 @@ export const suite = {
|
|
|
176
176
|
if (sentRequest)
|
|
177
177
|
onReadable();
|
|
178
178
|
}
|
|
179
|
-
if (event.lNetworkEvents & 32 /*
|
|
179
|
+
if (event.lNetworkEvents & 32 /* FdEvent.FD_CLOSE */) {
|
|
180
180
|
// drain remaining then finish
|
|
181
181
|
if (ssl && sentRequest && !sawNonNumber) {
|
|
182
182
|
onReadable();
|