Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
Flutter Inappwebview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李增强
Flutter Inappwebview
Commits
4ebdba09
Commit
4ebdba09
authored
6 years ago
by
pichillilorenzo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
removed download method, injectScriptCode now returns result of the code injected #2, code cleanup
parent
d89cd5df
master
develop
v1.2.1
v1.2.2
v2.0.0
v2.0.1
v2.0.1+1
v2.1.0
v2.1.0+1
v3.0.0
v3.1.0
v3.2.0
v3.3.0
v3.3.0+3
v3.4.0
v3.4.0+1
v3.4.0+2
v4.0.0
v4.0.0+4
v4.0.0+6
v4.0.0+5
v4.0.0+4
v4.0.0
v3.4.0+2
v3.4.0+1
v.3.4.0
v3.3.0+3
v3.3.0
v3.2.0
v3.1.0
v3.0.0
v2.1.0+1
v2.1.0
v2.0.1+1
v2.0.1
v2.0.0
v1.2.1
v1.2.0
v1.1.3
v1.1.2
v1.1.1
v1.0.1
v1.0.0
v0.6.0
v0.5.51
v0.5.5
v0.5.4
v0.5.3
v0.5.2
v0.5.1
v0.5.0
v0.4.1
v0.4.0
v0.3.2
v0.3.1
v0.3.0
v0.2.1
v0.2.0
v0.1.1
No related merge requests found
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
363 additions
and
264 deletions
+363
-264
.idea/workspace.xml
.idea/workspace.xml
+158
-128
android/build.gradle
android/build.gradle
+0
-1
android/src/main/AndroidManifest.xml
android/src/main/AndroidManifest.xml
+0
-1
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
...renzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
+60
-28
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebViewClient.java
...renzo/flutter_inappbrowser/InAppBrowserWebViewClient.java
+4
-4
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/RequestPermissionHandler.java
...orenzo/flutter_inappbrowser/RequestPermissionHandler.java
+0
-2
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
...pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
+34
-62
example/ios/Podfile
example/ios/Podfile
+1
-0
example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
...ner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+8
-0
example/lib/main.dart
example/lib/main.dart
+17
-2
flutter_inappbrowser.iml
flutter_inappbrowser.iml
+1
-0
ios/Classes/InAppBrowserFlutterPlugin.h
ios/Classes/InAppBrowserFlutterPlugin.h
+1
-1
ios/Classes/InAppBrowserFlutterPlugin.m
ios/Classes/InAppBrowserFlutterPlugin.m
+2
-2
ios/Classes/InAppBrowserWebViewController.swift
ios/Classes/InAppBrowserWebViewController.swift
+34
-0
ios/Classes/SwiftFlutterPlugin.swift
ios/Classes/SwiftFlutterPlugin.swift
+41
-26
lib/flutter_inappbrowser.dart
lib/flutter_inappbrowser.dart
+1
-6
pubspec.yaml
pubspec.yaml
+1
-1
No files found.
.idea/workspace.xml
View file @
4ebdba09
...
...
@@ -5,21 +5,27 @@
<config
/>
</shared>
</component>
<component
name=
"AndroidLogFilters"
>
<option
name=
"TOOL_WINDOW_CONFIGURED_FILTER"
value=
"Show only selected application"
/>
</component>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"9b41f7a2-a71e-4923-91fb-249d7815b3e7"
name=
"Default"
comment=
""
>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/RequestPermissionHandler.java"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/android/build.gradle"
afterPath=
"$PROJECT_DIR$/android/build.gradle"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/AndroidManifest.xml"
afterPath=
"$PROJECT_DIR$/android/src/main/AndroidManifest.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserOptions.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserOptions.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebChromeClient.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebChromeClient.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
afterPath=
""
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebViewClient.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebViewClient.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/RequestPermissionHandler.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/RequestPermissionHandler.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/res/layout/activity_web_view.xml"
afterPath=
"$PROJECT_DIR$/android/src/main/res/layout/activity_web_view.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/res/menu/menu_main.xml"
afterPath=
"$PROJECT_DIR$/android/src/main/res/menu/menu_main.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/example/ios/Podfile"
afterPath=
"$PROJECT_DIR$/example/ios/Podfile"
/>
<change
beforePath=
"$PROJECT_DIR$/example/lib/main.dart"
afterPath=
"$PROJECT_DIR$/example/lib/main.dart"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserOptions.swift"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserOptions.swift"
/>
<change
beforePath=
"$PROJECT_DIR$/flutter_inappbrowser.iml"
afterPath=
"$PROJECT_DIR$/flutter_inappbrowser.iml"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppBrowser.h"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserFlutterPlugin.h"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppBrowser.m"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserFlutterPlugin.m"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserWebViewController.swift"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserWebViewController.swift"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/SwiftFlutterPlugin.swift"
afterPath=
"$PROJECT_DIR$/ios/Classes/SwiftFlutterPlugin.swift"
/>
<change
beforePath=
"$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
afterPath=
"$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
/>
<change
beforePath=
"$PROJECT_DIR$/pubspec.yaml"
afterPath=
"$PROJECT_DIR$/pubspec.yaml"
/>
</list>
<ignored
path=
"$PROJECT_DIR$/.dart_tool/"
/>
<ignored
path=
"$PROJECT_DIR$/.idea/"
/>
...
...
@@ -39,8 +45,8 @@
<file
leaf-file-name=
"flutter_inappbrowser.dart"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
1725
"
>
<caret
line=
"1
36"
column=
"29"
lean-forward=
"false"
selection-start-line=
"136"
selection-start-column=
"29"
selection-end-line=
"136"
selection-end-column=
"29
"
/>
<state
relative-caret-position=
"
513
"
>
<caret
line=
"1
98"
column=
"52"
lean-forward=
"false"
selection-start-line=
"198"
selection-start-column=
"52"
selection-end-line=
"198"
selection-end-column=
"52
"
/>
<folding>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
</folding>
...
...
@@ -51,8 +57,8 @@
<file
leaf-file-name=
"main.dart"
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
212
"
>
<caret
line=
"
43"
column=
"51"
lean-forward=
"false"
selection-start-line=
"43"
selection-start-column=
"51"
selection-end-line=
"43"
selection-end-column=
"51
"
/>
<state
relative-caret-position=
"
495
"
>
<caret
line=
"
35"
column=
"0"
lean-forward=
"false"
selection-start-line=
"35"
selection-start-column=
"0"
selection-end-line=
"35"
selection-end-column=
"0
"
/>
<folding
/>
</state>
</provider>
...
...
@@ -69,7 +75,6 @@
</component>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<find>
Resource
</find>
<find>
(0)
</find>
<find>
closeDi
</find>
<find>
hide()
</find>
...
...
@@ -99,6 +104,7 @@
<find>
injectDeferredObject
</find>
<find>
sourceFile
</find>
<find>
hideUrlBar
</find>
<find>
InAppBrowser
</find>
</findStrings>
<replaceStrings>
<replace>
activity.getPreferences(0)
</replace>
...
...
@@ -122,13 +128,11 @@
<option
value=
"$PROJECT_DIR$/android/src/main/AndroidManifest.xml"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutterwebview/FlutterWebviewPlugin.java"
/>
<option
value=
"$PROJECT_DIR$/lib/flutter_webview.dart"
/>
<option
value=
"$PROJECT_DIR$/example/ios/Podfile"
/>
<option
value=
"$PROJECT_DIR$/example/ios/Flutter/Debug.xcconfig"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutterwebview/InAppBrowser.java"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutterwebview/InAppBrowserClient.java"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutterwebview/InAppBrowserDialog.java"
/>
<option
value=
"$PROJECT_DIR$/android/settings.gradle"
/>
<option
value=
"$PROJECT_DIR$/ios/flutter_inappbrowser.podspec"
/>
<option
value=
"$PROJECT_DIR$/example/pubspec.yaml"
/>
<option
value=
"$PROJECT_DIR$/ios/Classes/InAppBrowser.m"
/>
<option
value=
"$PROJECT_DIR$/ios/Classes/SwiftFlutterPlugin.swift"
/>
...
...
@@ -136,19 +140,21 @@
<option
value=
"$PROJECT_DIR$/LICENSE"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserDialog.java"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserClient.java"
/>
<option
value=
"$PROJECT_DIR$/pubspec.yaml"
/>
<option
value=
"$PROJECT_DIR$/README.md"
/>
<option
value=
"$PROJECT_DIR$/android/build.gradle"
/>
<option
value=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
/>
<option
value=
"$PROJECT_DIR$/example/ios/Podfile"
/>
<option
value=
"$PROJECT_DIR$/ios/flutter_inappbrowser.podspec"
/>
<option
value=
"$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
/>
<option
value=
"$PROJECT_DIR$/android/build.gradle"
/>
<option
value=
"$PROJECT_DIR$/pubspec.yaml"
/>
<option
value=
"$PROJECT_DIR$/example/lib/main.dart"
/>
</list>
</option>
</component>
<component
name=
"ProjectFrameBounds"
>
<option
name=
"x"
value=
"
362
"
/>
<option
name=
"x"
value=
"
288
"
/>
<option
name=
"y"
value=
"23"
/>
<option
name=
"width"
value=
"1
554
"
/>
<option
name=
"width"
value=
"1
632
"
/>
<option
name=
"height"
value=
"1057"
/>
</component>
<component
name=
"ProjectLevelVcsManager"
settingsEditedManually=
"true"
/>
...
...
@@ -167,6 +173,9 @@
<foldersAlwaysOnTop
value=
"true"
/>
</navigator>
<panes>
<pane
id=
"Scope"
/>
<pane
id=
"Scratches"
/>
<pane
id=
"AndroidView"
/>
<pane
id=
"ProjectPane"
>
<subPane>
<expand>
...
...
@@ -174,6 +183,17 @@
<item
name=
"flutter_inappbrowser"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"flutter_inappbrowser"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
<path>
<item
name=
"flutter_inappbrowser"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"flutter_inappbrowser"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"android"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
<path>
<item
name=
"flutter_inappbrowser"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"flutter_inappbrowser"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"android"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"main"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
<path>
<item
name=
"flutter_inappbrowser"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"flutter_inappbrowser"
type=
"462c0819:PsiDirectoryNode"
/>
...
...
@@ -197,8 +217,7 @@
<item
name=
"flutter_inappbrowser"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"example"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"android"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"app"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"main"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
".gradle"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
<path>
<item
name=
"flutter_inappbrowser"
type=
"b2602c69:ProjectViewProjectNode"
/>
...
...
@@ -221,9 +240,6 @@
</subPane>
<option
name=
"show-excluded-files"
value=
"false"
/>
</pane>
<pane
id=
"Scratches"
/>
<pane
id=
"AndroidView"
/>
<pane
id=
"Scope"
/>
<pane
id=
"PackagesPane"
/>
</panes>
</component>
...
...
@@ -239,6 +255,8 @@
<property
name=
"Repository.Attach.JavaDocs"
value=
"false"
/>
<property
name=
"Repository.Attach.Sources"
value=
"false"
/>
<property
name=
"settings.editor.selected.configurable"
value=
"configurable.group.language"
/>
<property
name=
"android.project.structure.last.selected"
value=
"SDK Location"
/>
<property
name=
"android.project.structure.proportion"
value=
"0.15"
/>
</component>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
...
...
@@ -412,41 +430,41 @@
<servers
/>
</component>
<component
name=
"ToolWindowManager"
>
<frame
x=
"
362"
y=
"23"
width=
"1554
"
height=
"1057"
extended-state=
"0"
/>
<frame
x=
"
288"
y=
"23"
width=
"1632
"
height=
"1057"
extended-state=
"0"
/>
<editor
active=
"true"
/>
<layout>
<window_info
id=
"Android Profiler"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"false"
weight=
"0.33"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"6"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Palette	"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Image Layers"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Build Variants"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Capture Analysis"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Event Log"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.31735888"
sideWeight=
"0.5026455"
order=
"7"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Dart Analysis"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.3290735"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Run"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.36208734"
sideWeight=
"0.4973545"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Version Control"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Terminal"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32694355"
sideWeight=
"0.4973545"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Event Log"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.31735888"
sideWeight=
"0.5026455"
order=
"8"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Dart Analysis"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.3290735"
sideWeight=
"0.5"
order=
"14"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Flutter Outline"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32936507"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Logcat"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Captures"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32936507"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Logcat"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"11"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Capture Tool"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Designer"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.20965609"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Structure"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.24969475"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Device File Explorer"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Theme Preview"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Debug"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"6"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Messages"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.31735888"
sideWeight=
"0.5"
order=
"12"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Palette	"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Image Layers"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Capture Analysis"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Run"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.36208734"
sideWeight=
"0.4973545"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Version Control"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"9"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Terminal"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.3258786"
sideWeight=
"0.4973545"
order=
"10"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Captures"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32936507"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.17798743"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Find"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.3290735"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Theme Preview"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Favorites"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Flutter Inspector"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Cvs"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"4"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Message"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Commander"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Dependency Viewer"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32800853"
sideWeight=
"0.5"
order=
"
8
"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Dependency Viewer"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32800853"
sideWeight=
"0.5"
order=
"
13
"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Hierarchy"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Ant Build"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Messages"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.31735888"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Inspection"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"5"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Find"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.3290735"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
</layout>
<layout-to-restore>
<window_info
id=
"Android Profiler"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"false"
weight=
"0.33"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
...
...
@@ -492,20 +510,6 @@
<watches-manager
/>
</component>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$PROJECT_DIR$/example/flutter_webview_example.iml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"29"
column=
"0"
lean-forward=
"false"
selection-start-line=
"27"
selection-start-column=
"0"
selection-end-line=
"29"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/android/app/src/main/AndroidManifest.xml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"105"
>
...
...
@@ -542,7 +546,7 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser
FlutterPlugin
.java"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"258"
>
<caret
line=
"65"
column=
"18"
lean-forward=
"false"
selection-start-line=
"65"
selection-start-column=
"18"
selection-end-line=
"65"
selection-end-column=
"18"
/>
...
...
@@ -550,7 +554,7 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java"
>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser
FlutterPlugin
.java"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"105"
>
<caret
line=
"74"
column=
"13"
lean-forward=
"false"
selection-start-line=
"74"
selection-start-column=
"13"
selection-end-line=
"74"
selection-end-column=
"13"
/>
...
...
@@ -630,13 +634,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/ios/Podfile"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"320"
>
<caret
line=
"56"
column=
"3"
lean-forward=
"false"
selection-start-line=
"56"
selection-start-column=
"3"
selection-end-line=
"56"
selection-end-column=
"3"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/local.properties"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
...
...
@@ -658,123 +655,145 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/android/
settings.gradle
"
>
<entry
file=
"file://$PROJECT_DIR$/example/android/
gradle.properties
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/
android/local.properties
"
>
<entry
file=
"file://$PROJECT_DIR$/example/
pubspec.yaml
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"
0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0
"
/>
<caret
line=
"0"
column=
"
6"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"6"
selection-end-line=
"0"
selection-end-column=
"26
"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
example/android/build.gradle
"
>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/InAppBrowser.h
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
example/android/gradle.properties
"
>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/InAppBrowser.m
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"
0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"
0"
/>
<state
relative-caret-position=
"
27
0"
>
<caret
line=
"
18"
column=
"50"
lean-forward=
"false"
selection-start-line=
"18"
selection-start-column=
"50"
selection-end-line=
"18"
selection-end-column=
"5
0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/pubspec.yaml"
>
<entry
file=
"file://$PROJECT_DIR$/CHANGELOG.md"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<state
split_layout=
"SPLIT"
>
<first_editor
relative-caret-position=
"45"
>
<caret
line=
"3"
column=
"0"
lean-forward=
"true"
selection-start-line=
"3"
selection-start-column=
"0"
selection-end-line=
"3"
selection-end-column=
"0"
/>
</first_editor>
<second_editor
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/LICENSE"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<caret
line=
"
0"
column=
"6"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"6"
selection-end-line=
"0"
selection-end-column=
"26
"
/>
<state
relative-caret-position=
"
15
"
>
<caret
line=
"
1"
column=
"31"
lean-forward=
"false"
selection-start-line=
"1"
selection-start-column=
"31"
selection-end-line=
"1"
selection-end-column=
"31
"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
ios/flutter_inappbrowser.podspec
"
>
<entry
file=
"file://$PROJECT_DIR$/
android/src/main/AndroidManifest.xml
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
27
0"
>
<caret
line=
"
18"
column=
"33"
lean-forward=
"false"
selection-start-line=
"18"
selection-start-column=
"33"
selection-end-line=
"18"
selection-end-column=
"33
"
/>
<state
relative-caret-position=
"
9
0"
>
<caret
line=
"
6"
column=
"0"
lean-forward=
"true"
selection-start-line=
"6"
selection-start-column=
"0"
selection-end-line=
"6"
selection-end-column=
"0
"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/ios/Classes/InAppBrowser.h"
>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserClient.java"
/>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserDialog.java"
/>
<entry
file=
"file://$PROJECT_DIR$/README.md"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<state
split_layout=
"SPLIT"
>
<first_editor
relative-caret-position=
"106"
>
<caret
line=
"94"
column=
"0"
lean-forward=
"true"
selection-start-line=
"94"
selection-start-column=
"0"
selection-end-line=
"94"
selection-end-column=
"0"
/>
</first_editor>
<second_editor
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/ios/Flutter/Release.xcconfig"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/InAppBrowser.m
"
>
<entry
file=
"file://$PROJECT_DIR$/
example/ios/Flutter/Debug.xcconfig
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
27
0"
>
<caret
line=
"
18"
column=
"50"
lean-forward=
"false"
selection-start-line=
"18"
selection-start-column=
"50"
selection-end-line=
"18"
selection-end-column=
"50
"
/>
<state
relative-caret-position=
"
3
0"
>
<caret
line=
"
2"
column=
"0"
lean-forward=
"false"
selection-start-line=
"2"
selection-start-column=
"0"
selection-end-line=
"2"
selection-end-column=
"24
"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
flutter_inappbrowser.iml
"
>
<entry
file=
"file://$PROJECT_DIR$/
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"38"
/>
<state
relative-caret-position=
"15"
>
<caret
line=
"157"
column=
"0"
lean-forward=
"false"
selection-start-line=
"157"
selection-start-column=
"0"
selection-end-line=
"157"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/CHANGELOG.md"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<state
split_layout=
"SPLIT"
>
<first_editor
relative-caret-position=
"45"
>
<caret
line=
"3"
column=
"0"
lean-forward=
"true"
selection-start-line=
"3"
selection-start-column=
"0"
selection-end-line=
"3"
selection-end-column=
"0"
/>
</first_editor>
<second_editor
/>
<entry
file=
"file://$PROJECT_DIR$/example/android/app/src/main/AndroidManifest.xml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
LICENSE
"
>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/InAppBrowserWebViewController.swift
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"15"
>
<caret
line=
"1"
column=
"31"
lean-forward=
"false"
selection-start-line=
"1"
selection-start-column=
"31"
selection-end-line=
"1"
selection-end-column=
"31"
/>
<state
relative-caret-position=
"180"
>
<caret
line=
"12"
column=
"0"
lean-forward=
"false"
selection-start-line=
"12"
selection-start-column=
"0"
selection-end-line=
"12"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/SwiftFlutterPlugin.swift
"
>
<entry
file=
"file://$PROJECT_DIR$/
example/ios/Podfile
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1965"
>
<caret
line=
"131"
column=
"5"
lean-forward=
"true"
selection-start-line=
"131"
selection-start-column=
"5"
selection-end-line=
"131"
selection-end-column=
"5"
/>
<state
relative-caret-position=
"328"
>
<caret
line=
"56"
column=
"0"
lean-forward=
"false"
selection-start-line=
"56"
selection-start-column=
"0"
selection-end-line=
"56"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
pubspec.yaml
"
>
<entry
file=
"file://$PROJECT_DIR$/
ios/flutter_inappbrowser.podspec
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"15"
>
<caret
line=
"1"
column=
"133"
lean-forward=
"false"
selection-start-line=
"1"
selection-start-column=
"13"
selection-end-line=
"1"
selection-end-column=
"133"
/>
<state
relative-caret-position=
"240"
>
<caret
line=
"16"
column=
"24"
lean-forward=
"false"
selection-start-line=
"16"
selection-start-column=
"24"
selection-end-line=
"16"
selection-end-column=
"24"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
android/src/main/AndroidManifest.xml
"
>
<entry
file=
"file://$PROJECT_DIR$/
ios/Classes/SwiftFlutterPlugin.swift
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"90"
>
<caret
line=
"6"
column=
"0"
lean-forward=
"true"
selection-start-line=
"6"
selection-start-column=
"0"
selection-end-line=
"6"
selection-end-column=
"0"
/>
<state
relative-caret-position=
"191"
>
<caret
line=
"107"
column=
"9"
lean-forward=
"false"
selection-start-line=
"107"
selection-start-column=
"9"
selection-end-line=
"107"
selection-end-column=
"9"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserClient.java"
/>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserDialog.java"
/>
<entry
file=
"file://$PROJECT_DIR$/README.md"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<state
split_layout=
"SPLIT"
>
<first_editor
relative-caret-position=
"106"
>
<caret
line=
"94"
column=
"0"
lean-forward=
"true"
selection-start-line=
"94"
selection-start-column=
"0"
selection-end-line=
"94"
selection-end-column=
"0"
/>
</first_editor>
<second_editor
/>
<entry
file=
"file://$PROJECT_DIR$/flutter_inappbrowser.iml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"38"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/build.gradle"
>
<entry
file=
"file://$PROJECT_DIR$/
example/
android/build.gradle"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"495"
>
<caret
line=
"33"
column=
"1"
lean-forward=
"false"
selection-start-line=
"33"
selection-start-column=
"1"
selection-end-line=
"33"
selection-end-column=
"1"
/>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
...
...
@@ -782,43 +801,54 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"435"
>
<caret
line=
"29"
column=
"9"
lean-forward=
"false"
selection-start-line=
"29"
selection-start-column=
"9"
selection-end-line=
"29"
selection-end-column=
"9"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/
ios/Flutter/Release.xcconfig
"
>
<entry
file=
"file://$PROJECT_DIR$/example/
android/settings.gradle
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/
ios/Flutter/Debug.xcconfig
"
>
<entry
file=
"file://$PROJECT_DIR$/example/
android/local.properties
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"30"
>
<caret
line=
"2"
column=
"0"
lean-forward=
"false"
selection-start-line=
"2"
selection-start-column=
"0"
selection-end-line=
"2"
selection-end-column=
"24"
/>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java
"
>
<entry
file=
"file://$PROJECT_DIR$/
example/android/app/build.gradle
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
15
"
>
<caret
line=
"
157"
column=
"0"
lean-forward=
"false"
selection-start-line=
"157"
selection-start-column=
"0"
selection-end-line=
"157
"
selection-end-column=
"0"
/>
<state
relative-caret-position=
"
-27
"
>
<caret
line=
"
0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0
"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
example/android/app/src/main/AndroidManifest.x
ml"
>
<entry
file=
"file://$PROJECT_DIR$/
pubspec.ya
ml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<state
relative-caret-position=
"115"
>
<caret
line=
"8"
column=
"0"
lean-forward=
"false"
selection-start-line=
"8"
selection-start-column=
"0"
selection-end-line=
"8"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/android/build.gradle"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"585"
>
<caret
line=
"39"
column=
"60"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"60"
selection-end-line=
"39"
selection-end-column=
"60"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
1725
"
>
<caret
line=
"1
36"
column=
"29"
lean-forward=
"false"
selection-start-line=
"136"
selection-start-column=
"29"
selection-end-line=
"136"
selection-end-column=
"29
"
/>
<state
relative-caret-position=
"
513
"
>
<caret
line=
"1
98"
column=
"52"
lean-forward=
"false"
selection-start-line=
"198"
selection-start-column=
"52"
selection-end-line=
"198"
selection-end-column=
"52
"
/>
<folding>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
</folding>
...
...
@@ -827,8 +857,8 @@
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
212
"
>
<caret
line=
"
43"
column=
"51"
lean-forward=
"false"
selection-start-line=
"43"
selection-start-column=
"51"
selection-end-line=
"43"
selection-end-column=
"51
"
/>
<state
relative-caret-position=
"
495
"
>
<caret
line=
"
35"
column=
"0"
lean-forward=
"false"
selection-start-line=
"35"
selection-start-column=
"0"
selection-end-line=
"35"
selection-end-column=
"0
"
/>
<folding
/>
</state>
</provider>
...
...
This diff is collapsed.
Click to expand it.
android/build.gradle
View file @
4ebdba09
...
...
@@ -38,5 +38,4 @@ android {
dependencies
{
implementation
'com.android.support:customtabs:27.1.1'
implementation
'com.android.support:appcompat-v7:27.1.1'
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
}
This diff is collapsed.
Click to expand it.
android/src/main/AndroidManifest.xml
View file @
4ebdba09
...
...
@@ -3,7 +3,6 @@
package=
"com.pichillilorenzo.flutter_inappbrowser"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<application
android:theme=
"@style/AppTheme"
>
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser.java
→
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowser
FlutterPlugin
.java
View file @
4ebdba09
...
...
@@ -30,13 +30,16 @@ import android.net.Uri;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.support.annotation.RequiresApi
;
import
android.util.JsonReader
;
import
android.util.JsonToken
;
import
android.webkit.MimeTypeMap
;
import
android.webkit.ValueCallback
;
import
android.webkit.WebView
;
import
android.webkit.WebViewClient
;
import
android.util.Log
;
import
android.widget.Toast
;
import
java.time.Duration
;
import
java.io.IOException
;
import
java.io.StringReader
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -44,11 +47,10 @@ import io.flutter.plugin.common.MethodCall;
import
io.flutter.plugin.common.MethodChannel
;
import
io.flutter.plugin.common.MethodChannel.MethodCallHandler
;
import
io.flutter.plugin.common.MethodChannel.Result
;
import
io.flutter.plugin.common.PluginRegistry
;
import
io.flutter.plugin.common.PluginRegistry.Registrar
;
/** InAppBrowser */
public
class
InAppBrowser
implements
MethodCallHandler
{
/** InAppBrowser
FlutterPlugin
*/
public
class
InAppBrowser
FlutterPlugin
implements
MethodCallHandler
{
public
static
Registrar
registrar
;
public
Activity
activity
;
...
...
@@ -56,10 +58,10 @@ public class InAppBrowser implements MethodCallHandler {
public
static
WebViewActivity
webViewActivity
;
private
static
final
String
NULL
=
"null"
;
protected
static
final
String
LOG_TAG
=
"InAppBrowser"
;
protected
static
final
String
LOG_TAG
=
"InAppBrowser
FlutterP
"
;
public
InAppBrowser
(
Registrar
r
,
Activity
activity
)
{
public
InAppBrowser
FlutterPlugin
(
Registrar
r
,
Activity
activity
)
{
registrar
=
r
;
this
.
activity
=
activity
;
channel
=
new
MethodChannel
(
registrar
.
messenger
(),
"com.pichillilorenzo/flutter_inappbrowser"
);
...
...
@@ -68,7 +70,7 @@ public class InAppBrowser implements MethodCallHandler {
/** Plugin registration. */
public
static
void
registerWith
(
Registrar
registrar
)
{
final
MethodChannel
channel
=
new
MethodChannel
(
registrar
.
messenger
(),
"com.pichillilorenzo/flutter_inappbrowser"
);
channel
.
setMethodCallHandler
(
new
InAppBrowser
(
registrar
,
registrar
.
activity
()));
channel
.
setMethodCallHandler
(
new
InAppBrowser
FlutterPlugin
(
registrar
,
registrar
.
activity
()));
}
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
KITKAT
)
...
...
@@ -111,9 +113,9 @@ public class InAppBrowser implements MethodCallHandler {
Log
.
e
(
LOG_TAG
,
"Error dialing "
+
url
+
": "
+
e
.
toString
());
}
}
// load in InAppBrowser
// load in InAppBrowser
FlutterPlugin
else
{
Log
.
d
(
LOG_TAG
,
"loading in InAppBrowser"
);
Log
.
d
(
LOG_TAG
,
"loading in InAppBrowser
FlutterPlugin
"
);
open
(
url
,
options
);
}
}
...
...
@@ -141,26 +143,25 @@ public class InAppBrowser implements MethodCallHandler {
break
;
case
"injectScriptCode"
:
source
=
call
.
argument
(
"source"
).
toString
();
jsWrapper
=
"(function(){JSON.stringify([eval(%s)])})()"
;
injectDeferredObject
(
source
,
jsWrapper
);
result
.
success
(
true
);
jsWrapper
=
"(function(){return JSON.stringify(eval(%s));})();"
;
injectDeferredObject
(
source
,
jsWrapper
,
result
);
break
;
case
"injectScriptFile"
:
urlFile
=
call
.
argument
(
"urlFile"
).
toString
();
jsWrapper
=
"(function(d) { var c = d.createElement('script'); c.src = %s; d.body.appendChild(c); })(document)"
;
injectDeferredObject
(
urlFile
,
jsWrapper
);
jsWrapper
=
"(function(d) { var c = d.createElement('script'); c.src = %s; d.body.appendChild(c); })(document)
;
"
;
injectDeferredObject
(
urlFile
,
jsWrapper
,
null
);
result
.
success
(
true
);
break
;
case
"injectStyleCode"
:
source
=
call
.
argument
(
"source"
).
toString
();
jsWrapper
=
"(function(d) { var c = d.createElement('style'); c.innerHTML = %s; d.body.appendChild(c); })(document)"
;
injectDeferredObject
(
source
,
jsWrapper
);
jsWrapper
=
"(function(d) { var c = d.createElement('style'); c.innerHTML = %s; d.body.appendChild(c); })(document)
;
"
;
injectDeferredObject
(
source
,
jsWrapper
,
null
);
result
.
success
(
true
);
break
;
case
"injectStyleFile"
:
urlFile
=
call
.
argument
(
"urlFile"
).
toString
();
jsWrapper
=
"(function(d) { var c = d.createElement('link'); c.rel='stylesheet'; c.type='text/css'; c.href = %s; d.head.appendChild(c); })(document)"
;
injectDeferredObject
(
urlFile
,
jsWrapper
);
jsWrapper
=
"(function(d) { var c = d.createElement('link'); c.rel='stylesheet'; c.type='text/css'; c.href = %s; d.head.appendChild(c); })(document)
;
"
;
injectDeferredObject
(
urlFile
,
jsWrapper
,
null
);
result
.
success
(
true
);
break
;
case
"show"
:
...
...
@@ -203,7 +204,7 @@ public class InAppBrowser implements MethodCallHandler {
}
/**
* Inject an object (script or style) into the InAppBrowser WebView.
* Inject an object (script or style) into the InAppBrowser
FlutterPlugin
WebView.
*
* This is a helper method for the inject{Script|Style}{Code|File} API calls, which
* provides a consistent method for injecting JavaScript code into the document.
...
...
@@ -211,15 +212,14 @@ public class InAppBrowser implements MethodCallHandler {
* If a wrapper string is supplied, then the source string will be JSON-encoded (adding
* quotes) and wrapped using string formatting. (The wrapper string should have a single
* '%s' marker)
*
* @param source The source object (filename or script/style text) to inject into
* @param source The source object (filename or script/style text) to inject into
* the document.
* @param jsWrapper A JavaScript string to wrap the source string in, so that the object
* is properly injected, or null if the source string is JavaScript text
*
which should be executed directly.
*
@param result
*/
private
void
injectDeferredObject
(
String
source
,
String
jsWrapper
)
{
if
(
webViewActivity
!=
null
)
{
private
void
injectDeferredObject
(
String
source
,
String
jsWrapper
,
final
Result
result
)
{
if
(
webViewActivity
!=
null
)
{
String
scriptToInject
;
if
(
jsWrapper
!=
null
)
{
org
.
json
.
JSONArray
jsonEsc
=
new
org
.
json
.
JSONArray
();
...
...
@@ -232,14 +232,46 @@ public class InAppBrowser implements MethodCallHandler {
}
final
String
finalScriptToInject
=
scriptToInject
;
activity
.
runOnUiThread
(
new
Runnable
()
{
@SuppressLint
(
"NewApi"
)
@Override
public
void
run
()
{
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
KITKAT
)
{
// This action will have the side-effect of blurring the currently focused element
webViewActivity
.
webView
.
loadUrl
(
"javascript:"
+
finalScriptToInject
);
}
else
{
webViewActivity
.
webView
.
evaluateJavascript
(
finalScriptToInject
,
null
);
webViewActivity
.
webView
.
evaluateJavascript
(
finalScriptToInject
,
new
ValueCallback
<
String
>()
{
@Override
public
void
onReceiveValue
(
String
s
)
{
if
(
result
==
null
)
return
;
JsonReader
reader
=
new
JsonReader
(
new
StringReader
(
s
));
// Must set lenient to parse single values
reader
.
setLenient
(
true
);
try
{
String
msg
;
msg
=
reader
.
nextString
();
JsonReader
reader2
=
new
JsonReader
(
new
StringReader
(
msg
));
reader2
.
setLenient
(
true
);
if
(
reader2
.
peek
()
==
JsonToken
.
STRING
)
msg
=
reader2
.
nextString
();
result
.
success
(
msg
);
}
catch
(
IOException
e
)
{
Log
.
e
(
LOG_TAG
,
"IOException"
,
e
);
}
finally
{
try
{
reader
.
close
();
}
catch
(
IOException
e
)
{
// NOOP
}
}
}
});
}
}
});
...
...
@@ -279,7 +311,7 @@ public class InAppBrowser implements MethodCallHandler {
activity
.
startActivity
(
intent
);
// not catching FileUriExposedException explicitly because buildtools<24 doesn't know about it
}
catch
(
java
.
lang
.
RuntimeException
e
)
{
Log
.
d
(
LOG_TAG
,
"InAppBrowser: Error loading url "
+
url
+
":"
+
e
.
toString
());
Log
.
d
(
LOG_TAG
,
"InAppBrowser
FlutterPlugin
: Error loading url "
+
url
+
":"
+
e
.
toString
());
}
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserWebViewClient.java
View file @
4ebdba09
...
...
@@ -104,7 +104,7 @@ public class InAppBrowserWebViewClient extends WebViewClient {
Map
<
String
,
Object
>
obj
=
new
HashMap
<>();
obj
.
put
(
"url"
,
url
);
InAppBrowser
.
channel
.
invokeMethod
(
"loadstart"
,
obj
);
InAppBrowser
FlutterPlugin
.
channel
.
invokeMethod
(
"loadstart"
,
obj
);
}
...
...
@@ -114,7 +114,7 @@ public class InAppBrowserWebViewClient extends WebViewClient {
activity
.
isLoading
=
false
;
// CB-10395 InAppBrowser's WebView not storing cookies reliable to local device storage
// CB-10395 InAppBrowser
FlutterPlugin
's WebView not storing cookies reliable to local device storage
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
CookieManager
.
getInstance
().
flush
();
}
else
{
...
...
@@ -127,7 +127,7 @@ public class InAppBrowserWebViewClient extends WebViewClient {
Map
<
String
,
Object
>
obj
=
new
HashMap
<>();
obj
.
put
(
"url"
,
url
);
InAppBrowser
.
channel
.
invokeMethod
(
"loadstop"
,
obj
);
InAppBrowser
FlutterPlugin
.
channel
.
invokeMethod
(
"loadstop"
,
obj
);
}
public
void
onReceivedError
(
WebView
view
,
int
errorCode
,
String
description
,
String
failingUrl
)
{
...
...
@@ -139,7 +139,7 @@ public class InAppBrowserWebViewClient extends WebViewClient {
obj
.
put
(
"url"
,
failingUrl
);
obj
.
put
(
"code"
,
errorCode
);
obj
.
put
(
"message"
,
description
);
InAppBrowser
.
channel
.
invokeMethod
(
"loaderror"
,
obj
);
InAppBrowser
FlutterPlugin
.
channel
.
invokeMethod
(
"loaderror"
,
obj
);
}
/**
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/RequestPermissionHandler.java
View file @
4ebdba09
...
...
@@ -13,8 +13,6 @@ import java.util.Map;
public
abstract
class
RequestPermissionHandler
implements
ActivityCompat
.
OnRequestPermissionsResultCallback
{
public
static
int
REQUEST_CODE_WRITE_EXTERNAL_STORAGE
=
0
;
private
static
Map
<
Integer
,
List
<
Runnable
>>
actionDictionary
=
new
HashMap
<>();
public
static
void
checkAndRun
(
Activity
activity
,
String
permission
,
int
requestCode
,
Runnable
runnable
)
{
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
View file @
4ebdba09
package
com.pichillilorenzo.flutter_inappbrowser
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.app.DownloadManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.graphics.Color
;
import
android.graphics.drawable.ColorDrawable
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Environment
;
import
android.support.annotation.RequiresApi
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.content.ContextCompat
;
import
android.support.v7.app.ActionBar
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.Menu
;
import
android.view.MenuInflater
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.webkit.CookieManager
;
import
android.webkit.DownloadListener
;
import
android.webkit.URLUtil
;
import
android.webkit.ValueCallback
;
import
android.webkit.WebSettings
;
import
android.webkit.WebView
;
import
android.widget.AutoCompleteTextView
;
import
android.widget.ImageView
;
import
android.widget.ProgressBar
;
import
android.widget.SearchView
;
import
android.widget.Toast
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -64,7 +48,7 @@ public class WebViewActivity extends AppCompatActivity {
options
=
new
InAppBrowserOptions
();
options
.
parse
((
HashMap
<
String
,
Object
>)
b
.
getSerializable
(
"options"
));
InAppBrowser
.
webViewActivity
=
this
;
InAppBrowser
FlutterPlugin
.
webViewActivity
=
this
;
actionBar
=
getSupportActionBar
();
...
...
@@ -82,39 +66,39 @@ public class WebViewActivity extends AppCompatActivity {
inAppBrowserWebViewClient
=
new
InAppBrowserWebViewClient
(
this
);
webView
.
setWebViewClient
(
inAppBrowserWebViewClient
);
final
Activity
activity
=
this
;
webView
.
setDownloadListener
(
new
DownloadListener
()
{
@Override
public
void
onDownloadStart
(
final
String
url
,
final
String
userAgent
,
final
String
contentDisposition
,
final
String
mimetype
,
final
long
contentLength
)
{
RequestPermissionHandler
.
checkAndRun
(
activity
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
RequestPermissionHandler
.
REQUEST_CODE_WRITE_EXTERNAL_STORAGE
,
new
Runnable
(){
@Override
public
void
run
(){
DownloadManager
.
Request
request
=
new
DownloadManager
.
Request
(
Uri
.
parse
(
url
));
final
String
filename
=
URLUtil
.
guessFileName
(
url
,
contentDisposition
,
mimetype
);
request
.
allowScanningByMediaScanner
();
request
.
setNotificationVisibility
(
DownloadManager
.
Request
.
VISIBILITY_VISIBLE_NOTIFY_COMPLETED
);
//Notify client once download is completed!
request
.
setVisibleInDownloadsUi
(
true
);
request
.
setDestinationInExternalPublicDir
(
Environment
.
DIRECTORY_DOWNLOADS
,
filename
);
DownloadManager
dm
=
(
DownloadManager
)
getSystemService
(
DOWNLOAD_SERVICE
);
if
(
dm
!=
null
)
{
dm
.
enqueue
(
request
);
Toast
.
makeText
(
getApplicationContext
(),
"Downloading File: "
+
filename
,
//To notify the Client that the file is being downloaded
Toast
.
LENGTH_LONG
).
show
();
}
else
{
Toast
.
makeText
(
getApplicationContext
(),
"Cannot Download File: "
+
filename
,
//To notify the Client that the file cannot be downloaded
Toast
.
LENGTH_LONG
).
show
();
}
}
});
}
});
//
final Activity activity = this;
//
//
webView.setDownloadListener(new DownloadListener() {
//
@Override
//
public void onDownloadStart(final String url, final String userAgent,
//
final String contentDisposition, final String mimetype,
//
final long contentLength) {
//
//
RequestPermissionHandler.checkAndRun(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, RequestPermissionHandler.REQUEST_CODE_WRITE_EXTERNAL_STORAGE, new Runnable(){
//
@Override
//
public void run(){
//
DownloadManager.Request request = new DownloadManager.Request(
//
Uri.parse(url));
//
//
final String filename = URLUtil.guessFileName(url, contentDisposition, mimetype);
//
request.allowScanningByMediaScanner();
//
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
//
request.setVisibleInDownloadsUi(true);
//
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
//
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
//
if (dm != null) {
//
dm.enqueue(request);
//
Toast.makeText(getApplicationContext(), "Downloading File: " + filename, //To notify the Client that the file is being downloaded
//
Toast.LENGTH_LONG).show();
//
}
//
else {
//
Toast.makeText(getApplicationContext(), "Cannot Download File: " + filename, //To notify the Client that the file cannot be downloaded
//
Toast.LENGTH_LONG).show();
//
}
//
}
//
});
//
}
//
});
WebSettings
settings
=
webView
.
getSettings
();
...
...
@@ -261,18 +245,6 @@ public class WebViewActivity extends AppCompatActivity {
return
super
.
onKeyDown
(
keyCode
,
event
);
}
// @TargetApi(Build.VERSION_CODES.KITKAT)
// void eval(MethodCall call, final MethodChannel.Result result) {
// String code = call.argument("code");
//
// webView.evaluateJavascript(code, new ValueCallback<String>() {
// @Override
// public void onReceiveValue(String value) {
// result.success(value);
// }
// });
// }
public
void
close
()
{
finish
();
}
...
...
This diff is collapsed.
Click to expand it.
example/ios/Podfile
View file @
4ebdba09
...
...
@@ -54,6 +54,7 @@ target 'Runner' do
File
.
symlink
(
p
[
:path
],
symlink
)
pod
p
[
:name
],
:path
=>
File
.
join
(
symlink
,
'ios'
)
}
end
post_install
do
|
installer
|
...
...
This diff is collapsed.
Click to expand it.
example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
0 → 100644
View file @
4ebdba09
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist
version=
"1.0"
>
<dict>
<key>
BuildSystemType
</key>
<string>
Original
</string>
</dict>
</plist>
This diff is collapsed.
Click to expand it.
example/lib/main.dart
View file @
4ebdba09
...
...
@@ -11,9 +11,24 @@ class MyInAppBrowser extends InAppBrowser {
}
@override
void
onLoadStop
(
String
url
)
{
void
onLoadStop
(
String
url
)
async
{
super
.
onLoadStop
(
url
);
print
(
"
\n\n
Stopped
$url
\n\n
"
);
print
(
await
this
.
injectScriptCode
(
"document.body.innerHTML"
));
print
(
await
this
.
injectScriptCode
(
"3"
));
print
(
await
this
.
injectScriptCode
(
"""
function asd (a,b) {
return a+b;
};
asd(3,5);
"""
));
print
(
await
this
.
injectScriptCode
(
"""
["
3
",56,"
sdf
"];
"""
));
print
(
await
this
.
injectScriptCode
(
"""
var x = {"
as
":4, "
dfdfg
": 6};
x;
"""
));
/*this.injectScriptFile("https://code.jquery.com/jquery-3.3.1.min.js");
this.injectScriptCode("""
\$( "body" ).html( "Next Step..." )
...
...
@@ -68,7 +83,7 @@ class _MyAppState extends State<MyApp> {
child:
new
RaisedButton
(
onPressed:
()
{
inAppBrowser
.
open
(
"https://flutter.io/"
,
options:
{
//"toolbarTopFixedTitle": "Fixed title",
"hideUrlBar"
:
true
,
//
"hideUrlBar": true,
//"toolbarTop": false,
//"toolbarBottom": false
});
...
...
This diff is collapsed.
Click to expand it.
flutter_inappbrowser.iml
View file @
4ebdba09
...
...
@@ -14,6 +14,7 @@
<excludeFolder
url=
"file://$MODULE_DIR$/example/flutter_plugin/.dart_tool"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/example/flutter_plugin/.pub"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/example/flutter_plugin/build"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/example/flutter_plugin/example/ios/Flutter/flutter_assets/packages"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/example/ios/Flutter/flutter_assets/packages"
/>
</content>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
...
...
This diff is collapsed.
Click to expand it.
ios/Classes/InAppBrowser.h
→
ios/Classes/InAppBrowser
FlutterPlugin
.h
View file @
4ebdba09
...
...
@@ -17,7 +17,7 @@
#import <Flutter/Flutter.h>
@interface
InAppBrowser
:
NSObject
<
FlutterPlugin
>
@interface
InAppBrowser
FlutterPlugin
:
NSObject
<
FlutterPlugin
>
+
(
void
)
registerWithRegistrar
:(
nonnull
NSObject
<
FlutterPluginRegistrar
>
*
)
registrar
;
@end
This diff is collapsed.
Click to expand it.
ios/Classes/InAppBrowser.m
→
ios/Classes/InAppBrowser
FlutterPlugin
.m
View file @
4ebdba09
...
...
@@ -15,10 +15,10 @@
under the License.
*/
#import "InAppBrowser.h"
#import "InAppBrowser
FlutterPlugin
.h"
#import <flutter_inappbrowser/flutter_inappbrowser-Swift.h>
@implementation
InAppBrowser
:
NSObject
@implementation
InAppBrowser
FlutterPlugin
:
NSObject
+
(
void
)
registerWithRegistrar
:(
NSObject
<
FlutterPluginRegistrar
>*
)
registrar
{
[
SwiftFlutterPlugin
registerWithRegistrar
:
registrar
];
}
...
...
This diff is collapsed.
Click to expand it.
ios/Classes/InAppBrowserWebViewController.swift
View file @
4ebdba09
...
...
@@ -433,6 +433,40 @@ class InAppBrowserWebViewController: UIViewController, WKUIDelegate, WKNavigatio
decisionHandler
(
.
allow
)
}
// func webView(_ webView: WKWebView,
// decidePolicyFor navigationResponse: WKNavigationResponse,
// decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
// let mimeType = navigationResponse.response.mimeType
// if mimeType != nil && !mimeType!.starts(with: "text/") {
// download(url: webView.url)
// decisionHandler(.cancel)
// return
// }
// decisionHandler(.allow)
// }
//
// func download (url: URL?) {
// let filename = url?.lastPathComponent
//
// let destination: DownloadRequest.DownloadFileDestination = { _, _ in
// let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
// let fileURL = documentsURL.appendingPathComponent(filename!)
//
// return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
// }
//
// Alamofire.download((url?.absoluteString)!, to: destination).downloadProgress { progress in
// print("Download Progress: \(progress.fractionCompleted)")
// }.response { response in
// if response.error == nil, let path = response.destinationURL?.path {
// UIAlertView(title: nil, message: "File saved to " + path, delegate: nil, cancelButtonTitle: nil).show()
// }
// else {
// UIAlertView(title: nil, message: "Cannot save " + filename!, delegate: nil, cancelButtonTitle: nil).show()
// }
// }
// }
func
webView
(
_
webView
:
WKWebView
,
didStartProvisionalNavigation
navigation
:
WKNavigation
!
)
{
// loading url, start spinner, update back/forward
backButton
.
isEnabled
=
webView
.
canGoBack
...
...
This diff is collapsed.
Click to expand it.
ios/Classes/SwiftFlutterPlugin.swift
View file @
4ebdba09
...
...
@@ -88,22 +88,22 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin {
result
(
true
)
break
case
"injectScriptCode"
:
self
.
injectScriptCode
(
arguments
:
arguments
!
)
result
(
true
)
self
.
injectScriptCode
(
arguments
:
arguments
!
,
result
:
result
)
break
case
"injectScriptFile"
:
self
.
injectScriptFile
(
arguments
:
arguments
!
)
self
.
injectScriptFile
(
arguments
:
arguments
!
,
result
:
nil
)
result
(
true
)
break
case
"injectStyleCode"
:
self
.
injectStyleCode
(
arguments
:
arguments
!
)
self
.
injectStyleCode
(
arguments
:
arguments
!
,
result
:
nil
)
result
(
true
)
break
case
"injectStyleFile"
:
self
.
injectStyleFile
(
arguments
:
arguments
!
)
self
.
injectStyleFile
(
arguments
:
arguments
!
,
result
:
nil
)
result
(
true
)
break
default
:
result
(
FlutterMethodNotImplemented
)
break
}
}
...
...
@@ -151,7 +151,7 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin {
}
else
{
print
(
"url is empty"
)
result
(
false
)
result
(
FlutterError
(
code
:
"InAppBrowserFlutterPlugin"
,
message
:
"url is empty"
,
details
:
nil
)
)
}
result
(
true
)
}
...
...
@@ -166,7 +166,7 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin {
}
else
{
print
(
"url is empty"
)
result
(
false
)
result
(
FlutterError
(
code
:
"InAppBrowserFlutterPlugin"
,
message
:
"url is empty"
,
details
:
nil
)
)
}
result
(
true
)
}
...
...
@@ -265,39 +265,54 @@ public class SwiftFlutterPlugin: NSObject, FlutterPlugin {
// '%@' marker).
//
// If no wrapper is supplied, then the source string is executed directly.
func
injectDeferredObject
(
_
source
:
String
,
withWrapper
jsWrapper
:
String
)
{
//if jsWrapper != nil {
func
injectDeferredObject
(
_
source
:
String
,
withWrapper
jsWrapper
:
String
,
result
:
FlutterResult
?)
{
let
jsonData
:
Data
?
=
try
?
JSONSerialization
.
data
(
withJSONObject
:
[
source
],
options
:
[])
let
sourceArrayString
=
String
(
data
:
jsonData
!
,
encoding
:
String
.
Encoding
.
utf8
)
if
sourceArrayString
!=
nil
{
let
sourceString
:
String
?
=
(
sourceArrayString
!
as
NSString
)
.
substring
(
with
:
NSRange
(
location
:
1
,
length
:
(
sourceArrayString
?
.
characters
.
count
??
0
)
-
2
))
let
jsToInject
=
String
(
format
:
jsWrapper
,
sourceString
!
)
webViewController
?
.
webView
?
.
evaluateJavaScript
(
jsToInject
)
webViewController
?
.
webView
?
.
evaluateJavaScript
(
jsToInject
,
completionHandler
:
{(
value
,
error
)
in
if
result
==
nil
{
return
}
do
{
let
data
:
Data
=
(
"["
+
String
(
describing
:
value
!
)
+
"]"
)
.
data
(
using
:
String
.
Encoding
.
utf8
,
allowLossyConversion
:
false
)
!
let
json
:
Array
<
Any
>
=
try
JSONSerialization
.
jsonObject
(
with
:
data
,
options
:
[])
as!
Array
<
Any
>
if
json
[
0
]
is
String
{
result
!
(
json
[
0
])
}
else
{
result
!
(
value
)
}
}
catch
let
error
as
NSError
{
print
(
"Failed to load:
\(
error
.
localizedDescription
)
"
)
result
!
(
FlutterError
(
code
:
"InAppBrowserFlutterPlugin"
,
message
:
"Failed to load:
\(
error
.
localizedDescription
)
"
,
details
:
error
))
}
})
}
//}
//else {
// webViewController?.webView?.evaluateJavaScript(source)
//}
}
public
func
injectScriptCode
(
arguments
:
NSDictionary
)
{
let
jsWrapper
=
"(function(){
JSON.stringify([eval(%@)])})()
"
injectDeferredObject
(
arguments
[
"source"
]
as!
String
,
withWrapper
:
jsWrapper
)
public
func
injectScriptCode
(
arguments
:
NSDictionary
,
result
:
FlutterResult
?
)
{
let
jsWrapper
=
"(function(){
return JSON.stringify(eval(%@));})();
"
injectDeferredObject
(
arguments
[
"source"
]
as!
String
,
withWrapper
:
jsWrapper
,
result
:
result
)
}
public
func
injectScriptFile
(
arguments
:
NSDictionary
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('script'); c.src = %@; d.body.appendChild(c); })(document)"
injectDeferredObject
(
arguments
[
"urlFile"
]
as!
String
,
withWrapper
:
jsWrapper
)
public
func
injectScriptFile
(
arguments
:
NSDictionary
,
result
:
FlutterResult
?
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('script'); c.src = %@; d.body.appendChild(c); })(document)
;
"
injectDeferredObject
(
arguments
[
"urlFile"
]
as!
String
,
withWrapper
:
jsWrapper
,
result
:
result
)
}
public
func
injectStyleCode
(
arguments
:
NSDictionary
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('style'); c.innerHTML = %@; d.body.appendChild(c); })(document)"
injectDeferredObject
(
arguments
[
"source"
]
as!
String
,
withWrapper
:
jsWrapper
)
public
func
injectStyleCode
(
arguments
:
NSDictionary
,
result
:
FlutterResult
?
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('style'); c.innerHTML = %@; d.body.appendChild(c); })(document)
;
"
injectDeferredObject
(
arguments
[
"source"
]
as!
String
,
withWrapper
:
jsWrapper
,
result
:
result
)
}
public
func
injectStyleFile
(
arguments
:
NSDictionary
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('link'); c.rel='stylesheet', c.type='text/css'; c.href = %@; d.body.appendChild(c); })(document)"
injectDeferredObject
(
arguments
[
"urlFile"
]
as!
String
,
withWrapper
:
jsWrapper
)
public
func
injectStyleFile
(
arguments
:
NSDictionary
,
result
:
FlutterResult
?
)
{
let
jsWrapper
=
"(function(d) { var c = d.createElement('link'); c.rel='stylesheet', c.type='text/css'; c.href = %@; d.body.appendChild(c); })(document)
;
"
injectDeferredObject
(
arguments
[
"urlFile"
]
as!
String
,
withWrapper
:
jsWrapper
,
result
:
result
)
}
func
webViewDidStartLoad
(
_
webView
:
WKWebView
)
{
...
...
This diff is collapsed.
Click to expand it.
lib/flutter_inappbrowser.dart
View file @
4ebdba09
...
...
@@ -174,7 +174,7 @@ class InAppBrowser {
}
///Injects JavaScript code into the [InAppBrowser] window. (Only available when the target is set to `_blank` or to `_self`)
Future
<
void
>
injectScriptCode
(
String
source
)
async
{
Future
<
dynamic
>
injectScriptCode
(
String
source
)
async
{
Map
<
String
,
dynamic
>
args
=
<
String
,
dynamic
>{};
args
.
putIfAbsent
(
'source'
,
()
=>
source
);
return
await
_channel
.
invokeMethod
(
'injectScriptCode'
,
args
);
...
...
@@ -221,9 +221,4 @@ class InAppBrowser {
}
///
void
onCustomScheme
(
String
url
)
{
}
}
This diff is collapsed.
Click to expand it.
pubspec.yaml
View file @
4ebdba09
...
...
@@ -18,7 +18,7 @@ dependencies:
flutter
:
plugin
:
androidPackage
:
com.pichillilorenzo.flutter_inappbrowser
pluginClass
:
InAppBrowser
pluginClass
:
InAppBrowser
FlutterPlugin
# To add assets to your plugin package, add an assets section, like this:
# assets:
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment