@capgo/inappbrowser 0.4.3 → 0.4.6
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.md +48 -24
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/InAppBrowserPlugin.java +167 -139
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/Options.java +81 -81
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewCallbacks.java +4 -4
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewDialog.java +216 -192
- package/dist/docs.json +131 -35
- package/dist/esm/definitions.d.ts +70 -4
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web.d.ts +2 -2
- package/dist/esm/web.js +5 -5
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +5 -5
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +5 -5
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/InAppBrowserPlugin.swift +1 -1
- package/ios/Plugin/WKWebViewController.swift +3 -3
- package/package.json +19 -19
|
@@ -22,217 +22,241 @@ import java.util.Map;
|
|
|
22
22
|
|
|
23
23
|
public class WebViewDialog extends Dialog {
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
public WebViewDialog(Context context, int theme, Options options) {
|
|
31
|
-
super(context, theme);
|
|
32
|
-
this._options = options;
|
|
33
|
-
this.isInitialized = false;
|
|
34
|
-
}
|
|
25
|
+
private WebView _webView;
|
|
26
|
+
private Toolbar _toolbar;
|
|
27
|
+
private Options _options;
|
|
28
|
+
private boolean isInitialized = false;
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
|
|
42
|
-
|
|
43
|
-
this._webView = findViewById(R.id.browser_view);
|
|
44
|
-
|
|
45
|
-
_webView.getSettings().setJavaScriptEnabled(true);
|
|
46
|
-
_webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
|
|
47
|
-
_webView.getSettings().setDatabaseEnabled(true);
|
|
48
|
-
_webView.getSettings().setDomStorageEnabled(true);
|
|
49
|
-
_webView.getSettings().setPluginState(android.webkit.WebSettings.PluginState.ON);
|
|
50
|
-
_webView.getSettings().setLoadWithOverviewMode(true);
|
|
51
|
-
_webView.getSettings().setUseWideViewPort(true);
|
|
52
|
-
|
|
53
|
-
Map<String, String> requestHeaders = new HashMap<>();
|
|
54
|
-
if (_options.getHeaders() != null) {
|
|
55
|
-
Iterator<String> keys = _options.getHeaders().keys();
|
|
56
|
-
while (keys.hasNext()) {
|
|
57
|
-
String key = keys.next();
|
|
58
|
-
if (TextUtils.equals(key, "User-Agent")) {
|
|
59
|
-
_webView.getSettings().setUserAgentString(_options.getHeaders().getString(key));
|
|
60
|
-
} else {
|
|
61
|
-
requestHeaders.put(key, _options.getHeaders().getString(key));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
30
|
+
public WebViewDialog(Context context, int theme, Options options) {
|
|
31
|
+
super(context, theme);
|
|
32
|
+
this._options = options;
|
|
33
|
+
this.isInitialized = false;
|
|
34
|
+
}
|
|
65
35
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
36
|
+
public void presentWebView() {
|
|
37
|
+
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
38
|
+
setCancelable(true);
|
|
39
|
+
getWindow()
|
|
40
|
+
.setFlags(
|
|
41
|
+
WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
|
42
|
+
WindowManager.LayoutParams.FLAG_FULLSCREEN
|
|
43
|
+
);
|
|
44
|
+
setContentView(R.layout.activity_browser);
|
|
45
|
+
getWindow()
|
|
46
|
+
.setLayout(
|
|
47
|
+
WindowManager.LayoutParams.MATCH_PARENT,
|
|
48
|
+
WindowManager.LayoutParams.MATCH_PARENT
|
|
49
|
+
);
|
|
69
50
|
|
|
70
|
-
|
|
71
|
-
setWebViewClient();
|
|
51
|
+
this._webView = findViewById(R.id.browser_view);
|
|
72
52
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
53
|
+
_webView.getSettings().setJavaScriptEnabled(true);
|
|
54
|
+
_webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
|
|
55
|
+
_webView.getSettings().setDatabaseEnabled(true);
|
|
56
|
+
_webView.getSettings().setDomStorageEnabled(true);
|
|
57
|
+
_webView
|
|
58
|
+
.getSettings()
|
|
59
|
+
.setPluginState(android.webkit.WebSettings.PluginState.ON);
|
|
60
|
+
_webView.getSettings().setLoadWithOverviewMode(true);
|
|
61
|
+
_webView.getSettings().setUseWideViewPort(true);
|
|
62
|
+
|
|
63
|
+
Map<String, String> requestHeaders = new HashMap<>();
|
|
64
|
+
if (_options.getHeaders() != null) {
|
|
65
|
+
Iterator<String> keys = _options.getHeaders().keys();
|
|
66
|
+
while (keys.hasNext()) {
|
|
67
|
+
String key = keys.next();
|
|
68
|
+
if (TextUtils.equals(key, "User-Agent")) {
|
|
69
|
+
_webView
|
|
70
|
+
.getSettings()
|
|
71
|
+
.setUserAgentString(_options.getHeaders().getString(key));
|
|
72
|
+
} else {
|
|
73
|
+
requestHeaders.put(key, _options.getHeaders().getString(key));
|
|
76
74
|
}
|
|
75
|
+
}
|
|
77
76
|
}
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
_webView.loadUrl(this._options.getUrl(), requestHeaders);
|
|
79
|
+
_webView.requestFocus();
|
|
80
|
+
_webView.requestFocusFromTouch();
|
|
81
|
+
|
|
82
|
+
setupToolbar();
|
|
83
|
+
setWebViewClient();
|
|
84
|
+
|
|
85
|
+
if (!this._options.isPresentAfterPageLoad()) {
|
|
86
|
+
show();
|
|
87
|
+
_options.getPluginCall().resolve();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public void setUrl(String url) {
|
|
92
|
+
Map<String, String> requestHeaders = new HashMap<>();
|
|
93
|
+
if (_options.getHeaders() != null) {
|
|
94
|
+
Iterator<String> keys = _options.getHeaders().keys();
|
|
95
|
+
while (keys.hasNext()) {
|
|
96
|
+
String key = keys.next();
|
|
97
|
+
if (TextUtils.equals(key, "User-Agent")) {
|
|
98
|
+
_webView
|
|
99
|
+
.getSettings()
|
|
100
|
+
.setUserAgentString(_options.getHeaders().getString(key));
|
|
101
|
+
} else {
|
|
102
|
+
requestHeaders.put(key, _options.getHeaders().getString(key));
|
|
91
103
|
}
|
|
92
|
-
|
|
104
|
+
}
|
|
93
105
|
}
|
|
106
|
+
_webView.loadUrl(url, requestHeaders);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
private void setTitle(String newTitleText) {
|
|
110
|
+
TextView textView = (TextView) _toolbar.findViewById(R.id.titleText);
|
|
111
|
+
textView.setText(newTitleText);
|
|
112
|
+
}
|
|
94
113
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
114
|
+
private void setupToolbar() {
|
|
115
|
+
_toolbar = this.findViewById(R.id.tool_bar);
|
|
116
|
+
if (!TextUtils.isEmpty(_options.getTitle())) {
|
|
117
|
+
this.setTitle(_options.getTitle());
|
|
118
|
+
} else {
|
|
119
|
+
try {
|
|
120
|
+
URI uri = new URI(_options.getUrl());
|
|
121
|
+
this.setTitle(uri.getHost());
|
|
122
|
+
} catch (URISyntaxException e) {
|
|
123
|
+
this.setTitle(_options.getTitle());
|
|
124
|
+
}
|
|
98
125
|
}
|
|
99
126
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
} catch (URISyntaxException e) {
|
|
109
|
-
this.setTitle(_options.getTitle());
|
|
110
|
-
}
|
|
127
|
+
View backButton = _toolbar.findViewById(R.id.backButton);
|
|
128
|
+
backButton.setOnClickListener(
|
|
129
|
+
new View.OnClickListener() {
|
|
130
|
+
@Override
|
|
131
|
+
public void onClick(View view) {
|
|
132
|
+
if (_webView.canGoBack()) {
|
|
133
|
+
_webView.goBack();
|
|
134
|
+
}
|
|
111
135
|
}
|
|
136
|
+
}
|
|
137
|
+
);
|
|
112
138
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
View closeButton = _toolbar.findViewById(R.id.closeButton);
|
|
138
|
-
closeButton.setOnClickListener(
|
|
139
|
-
new View.OnClickListener() {
|
|
140
|
-
@Override
|
|
141
|
-
public void onClick(View view) {
|
|
142
|
-
dismiss();
|
|
143
|
-
_options.getCallbacks().closeEvent(_webView.getUrl());
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
if (TextUtils.equals(_options.getToolbarType(), "activity")) {
|
|
149
|
-
_toolbar.findViewById(R.id.forwardButton).setVisibility(View.GONE);
|
|
150
|
-
_toolbar.findViewById(R.id.backButton).setVisibility(View.GONE);
|
|
151
|
-
//TODO: Add share button functionality
|
|
152
|
-
} else if (TextUtils.equals(_options.getToolbarType(), "navigation")) {
|
|
153
|
-
//TODO: Remove share button when implemented
|
|
154
|
-
} else if (TextUtils.equals(_options.getToolbarType(), "blank")) {
|
|
155
|
-
_toolbar.setVisibility(View.GONE);
|
|
156
|
-
} else {
|
|
157
|
-
_toolbar.findViewById(R.id.forwardButton).setVisibility(View.GONE);
|
|
158
|
-
_toolbar.findViewById(R.id.backButton).setVisibility(View.GONE);
|
|
139
|
+
View forwardButton = _toolbar.findViewById(R.id.forwardButton);
|
|
140
|
+
forwardButton.setOnClickListener(
|
|
141
|
+
new View.OnClickListener() {
|
|
142
|
+
@Override
|
|
143
|
+
public void onClick(View view) {
|
|
144
|
+
if (_webView.canGoForward()) {
|
|
145
|
+
_webView.goForward();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
View closeButton = _toolbar.findViewById(R.id.closeButton);
|
|
152
|
+
closeButton.setOnClickListener(
|
|
153
|
+
new View.OnClickListener() {
|
|
154
|
+
@Override
|
|
155
|
+
public void onClick(View view) {
|
|
156
|
+
dismiss();
|
|
157
|
+
_options.getCallbacks().closeEvent(_webView.getUrl());
|
|
159
158
|
}
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
if (TextUtils.equals(_options.getToolbarType(), "activity")) {
|
|
163
|
+
_toolbar.findViewById(R.id.forwardButton).setVisibility(View.GONE);
|
|
164
|
+
_toolbar.findViewById(R.id.backButton).setVisibility(View.GONE);
|
|
165
|
+
//TODO: Add share button functionality
|
|
166
|
+
} else if (TextUtils.equals(_options.getToolbarType(), "navigation")) {
|
|
167
|
+
//TODO: Remove share button when implemented
|
|
168
|
+
} else if (TextUtils.equals(_options.getToolbarType(), "blank")) {
|
|
169
|
+
_toolbar.setVisibility(View.GONE);
|
|
170
|
+
} else {
|
|
171
|
+
_toolbar.findViewById(R.id.forwardButton).setVisibility(View.GONE);
|
|
172
|
+
_toolbar.findViewById(R.id.backButton).setVisibility(View.GONE);
|
|
160
173
|
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
private void setWebViewClient() {
|
|
177
|
+
_webView.setWebViewClient(
|
|
178
|
+
new WebViewClient() {
|
|
179
|
+
@Override
|
|
180
|
+
public boolean shouldOverrideUrlLoading(
|
|
181
|
+
WebView view,
|
|
182
|
+
WebResourceRequest request
|
|
183
|
+
) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@Override
|
|
188
|
+
public void onLoadResource(WebView view, String url) {
|
|
189
|
+
super.onLoadResource(view, url);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@Override
|
|
193
|
+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
|
194
|
+
super.onPageStarted(view, url, favicon);
|
|
195
|
+
try {
|
|
196
|
+
URI uri = new URI(url);
|
|
197
|
+
setTitle(uri.getHost());
|
|
198
|
+
} catch (URISyntaxException e) {
|
|
199
|
+
// Do nothing
|
|
200
|
+
}
|
|
201
|
+
_options.getCallbacks().urlChangeEvent(url);
|
|
202
|
+
}
|
|
161
203
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
super.onLoadResource(view, url);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
@Override
|
|
176
|
-
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
|
177
|
-
super.onPageStarted(view, url, favicon);
|
|
178
|
-
try {
|
|
179
|
-
URI uri = new URI(url);
|
|
180
|
-
setTitle(uri.getHost());
|
|
181
|
-
} catch (URISyntaxException e) {
|
|
182
|
-
// Do nothing
|
|
183
|
-
}
|
|
184
|
-
_options.getCallbacks().urlChangeEvent(url);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
@Override
|
|
188
|
-
public void onPageFinished(WebView view, String url) {
|
|
189
|
-
super.onPageFinished(view, url);
|
|
190
|
-
_options.getCallbacks().pageLoaded();
|
|
191
|
-
if (!isInitialized) {
|
|
192
|
-
isInitialized = true;
|
|
193
|
-
_webView.clearHistory();
|
|
194
|
-
if (_options.isPresentAfterPageLoad()) {
|
|
195
|
-
show();
|
|
196
|
-
_options.getPluginCall().resolve();
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
ImageButton backButton = _toolbar.findViewById(R.id.backButton);
|
|
201
|
-
if (_webView.canGoBack()) {
|
|
202
|
-
backButton.setImageResource(R.drawable.arrow_back_enabled);
|
|
203
|
-
backButton.setEnabled(true);
|
|
204
|
-
} else {
|
|
205
|
-
backButton.setImageResource(R.drawable.arrow_back_disabled);
|
|
206
|
-
backButton.setEnabled(false);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
ImageButton forwardButton = _toolbar.findViewById(R.id.forwardButton);
|
|
210
|
-
if (_webView.canGoForward()) {
|
|
211
|
-
forwardButton.setImageResource(R.drawable.arrow_forward_enabled);
|
|
212
|
-
forwardButton.setEnabled(true);
|
|
213
|
-
} else {
|
|
214
|
-
forwardButton.setImageResource(R.drawable.arrow_forward_disabled);
|
|
215
|
-
forwardButton.setEnabled(false);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
_options.getCallbacks().pageLoaded();
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
@Override
|
|
222
|
-
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
|
|
223
|
-
super.onReceivedError(view, request, error);
|
|
224
|
-
_options.getCallbacks().pageLoadError();
|
|
225
|
-
}
|
|
204
|
+
@Override
|
|
205
|
+
public void onPageFinished(WebView view, String url) {
|
|
206
|
+
super.onPageFinished(view, url);
|
|
207
|
+
_options.getCallbacks().pageLoaded();
|
|
208
|
+
if (!isInitialized) {
|
|
209
|
+
isInitialized = true;
|
|
210
|
+
_webView.clearHistory();
|
|
211
|
+
if (_options.isPresentAfterPageLoad()) {
|
|
212
|
+
show();
|
|
213
|
+
_options.getPluginCall().resolve();
|
|
226
214
|
}
|
|
227
|
-
|
|
228
|
-
}
|
|
215
|
+
}
|
|
229
216
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
217
|
+
ImageButton backButton = _toolbar.findViewById(R.id.backButton);
|
|
218
|
+
if (_webView.canGoBack()) {
|
|
219
|
+
backButton.setImageResource(R.drawable.arrow_back_enabled);
|
|
220
|
+
backButton.setEnabled(true);
|
|
221
|
+
} else {
|
|
222
|
+
backButton.setImageResource(R.drawable.arrow_back_disabled);
|
|
223
|
+
backButton.setEnabled(false);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
ImageButton forwardButton = _toolbar.findViewById(R.id.forwardButton);
|
|
227
|
+
if (_webView.canGoForward()) {
|
|
228
|
+
forwardButton.setImageResource(R.drawable.arrow_forward_enabled);
|
|
229
|
+
forwardButton.setEnabled(true);
|
|
230
|
+
} else {
|
|
231
|
+
forwardButton.setImageResource(R.drawable.arrow_forward_disabled);
|
|
232
|
+
forwardButton.setEnabled(false);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
_options.getCallbacks().pageLoaded();
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@Override
|
|
239
|
+
public void onReceivedError(
|
|
240
|
+
WebView view,
|
|
241
|
+
WebResourceRequest request,
|
|
242
|
+
WebResourceError error
|
|
243
|
+
) {
|
|
244
|
+
super.onReceivedError(view, request, error);
|
|
245
|
+
_options.getCallbacks().pageLoadError();
|
|
236
246
|
}
|
|
247
|
+
}
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
@Override
|
|
252
|
+
public void onBackPressed() {
|
|
253
|
+
if (
|
|
254
|
+
_webView.canGoBack() &&
|
|
255
|
+
TextUtils.equals(_options.getToolbarType(), "navigation")
|
|
256
|
+
) {
|
|
257
|
+
_webView.goBack();
|
|
258
|
+
} else {
|
|
259
|
+
super.onBackPressed();
|
|
237
260
|
}
|
|
261
|
+
}
|
|
238
262
|
}
|