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
c4afea91
Commit
c4afea91
authored
Sep 25, 2018
by
pichillilorenzo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added initial support for Chrome Custom Tabs in android
parent
141da409
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
592 additions
and
225 deletions
+592
-225
.idea/workspace.xml
.idea/workspace.xml
+65
-166
android/src/main/AndroidManifest.xml
android/src/main/AndroidManifest.xml
+3
-3
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
...renzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
+36
-31
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserOptions.java
...illilorenzo/flutter_inappbrowser/InAppBrowserOptions.java
+29
-22
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
...pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
+1
-1
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ChromeCustomTabsActivity.java
...pbrowser/chrome_custom_tabs/ChromeCustomTabsActivity.java
+87
-0
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabActivityHelper.java
...ppbrowser/chrome_custom_tabs/CustomTabActivityHelper.java
+155
-0
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabsHelper.java
...ter_inappbrowser/chrome_custom_tabs/CustomTabsHelper.java
+129
-0
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/KeepAliveService.java
...ter_inappbrowser/chrome_custom_tabs/KeepAliveService.java
+18
-0
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnection.java
...er_inappbrowser/chrome_custom_tabs/ServiceConnection.java
+32
-0
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnectionCallback.java
...browser/chrome_custom_tabs/ServiceConnectionCallback.java
+19
-0
android/src/main/res/layout/chrome_custom_tabs_layout.xml
android/src/main/res/layout/chrome_custom_tabs_layout.xml
+6
-0
android/src/main/res/values/styles.xml
android/src/main/res/values/styles.xml
+9
-0
example/lib/main.dart
example/lib/main.dart
+2
-1
pubspec.yaml
pubspec.yaml
+1
-1
No files found.
.idea/workspace.xml
View file @
c4afea91
...
@@ -10,8 +10,21 @@
...
@@ -10,8 +10,21 @@
</component>
</component>
<component
name=
"ChangeListManager"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"9b41f7a2-a71e-4923-91fb-249d7815b3e7"
name=
"Default"
comment=
""
>
<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/chrome_custom_tabs/ChromeCustomTabsActivity.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabActivityHelper.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabsHelper.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/KeepAliveService.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnection.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnectionCallback.java"
/>
<change
beforePath=
""
afterPath=
"$PROJECT_DIR$/android/src/main/res/layout/chrome_custom_tabs_layout.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/README.md"
afterPath=
"$PROJECT_DIR$/README.md"
/>
<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/InAppBrowserFlutterPlugin.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.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/WebViewActivity.java"
afterPath=
"$PROJECT_DIR$/android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java"
/>
<change
beforePath=
"$PROJECT_DIR$/android/src/main/res/values/styles.xml"
afterPath=
"$PROJECT_DIR$/android/src/main/res/values/styles.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/example/lib/main.dart"
afterPath=
"$PROJECT_DIR$/example/lib/main.dart"
/>
<change
beforePath=
"$PROJECT_DIR$/pubspec.yaml"
afterPath=
"$PROJECT_DIR$/pubspec.yaml"
/>
</list>
</list>
<ignored
path=
"$PROJECT_DIR$/.dart_tool/"
/>
<ignored
path=
"$PROJECT_DIR$/.dart_tool/"
/>
<ignored
path=
"$PROJECT_DIR$/.idea/"
/>
<ignored
path=
"$PROJECT_DIR$/.idea/"
/>
...
@@ -28,11 +41,11 @@
...
@@ -28,11 +41,11 @@
</component>
</component>
<component
name=
"FileEditorManager"
>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
leaf-file-name=
"flutter_inappbrowser.dart"
pinned=
"false"
current-in-tab=
"
fals
e"
>
<file
leaf-file-name=
"flutter_inappbrowser.dart"
pinned=
"false"
current-in-tab=
"
tru
e"
>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
463
"
>
<caret
line=
"
19"
column=
"2"
lean-forward=
"true"
selection-start-line=
"19"
selection-start-column=
"2"
selection-end-line=
"19"
selection-end-column=
"2
"
/>
<caret
line=
"
233"
column=
"3"
lean-forward=
"false"
selection-start-line=
"233"
selection-start-column=
"3"
selection-end-line=
"233"
selection-end-column=
"3
"
/>
<folding>
<folding>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
</folding>
</folding>
...
@@ -43,69 +56,11 @@
...
@@ -43,69 +56,11 @@
<file
leaf-file-name=
"main.dart"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"main.dart"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"398"
>
<state
relative-caret-position=
"614"
>
<caret
line=
"30"
column=
"50"
lean-forward=
"true"
selection-start-line=
"30"
selection-start-column=
"50"
selection-end-line=
"30"
selection-end-column=
"50"
/>
<caret
line=
"92"
column=
"18"
lean-forward=
"false"
selection-start-line=
"92"
selection-start-column=
"18"
selection-end-line=
"92"
selection-end-column=
"18"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"pubspec.yaml"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/pubspec.yaml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"525"
>
<caret
line=
"35"
column=
"55"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"55"
selection-end-line=
"35"
selection-end-column=
"55"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"flutter_inappbrowser.iml"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/flutter_inappbrowser.iml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"330"
>
<caret
line=
"22"
column=
"9"
lean-forward=
"true"
selection-start-line=
"22"
selection-start-column=
"9"
selection-end-line=
"22"
selection-end-column=
"9"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"README.md"
pinned=
"false"
current-in-tab=
"true"
>
<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=
"130"
>
<caret
line=
"33"
column=
"19"
lean-forward=
"false"
selection-start-line=
"33"
selection-start-column=
"19"
selection-end-line=
"33"
selection-end-column=
"19"
/>
<folding>
<folding>
<marker
date=
"1537747544313"
expanded=
"false"
signature=
"863:961"
ph=
"..."
/>
<element
signature=
"e#0#39#0"
expanded=
"true"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1005:1113"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1005:2050"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1051:1091"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1143:1717"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1429:1482"
ph=
""""...""""
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1537:1609"
ph=
""""...""""
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1788:1849"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1879:1922"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1982:2047"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2177:2242"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2283:2872"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2317:2345"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2396:2870"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2424:2865"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2450:2858"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2478:2561"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2507:2550"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2587:2849"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2622:2838"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2701:2768"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10453:10461"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10580:10588"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10748:10756"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10852:10860"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"11038:11044"
ph=
"{...}"
/>
</folding>
</folding>
</first_editor>
<second_editor
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -189,11 +144,11 @@
...
@@ -189,11 +144,11 @@
<option
value=
"$PROJECT_DIR$/example/ios/Podfile"
/>
<option
value=
"$PROJECT_DIR$/example/ios/Podfile"
/>
<option
value=
"$PROJECT_DIR$/ios/flutter_inappbrowser.podspec"
/>
<option
value=
"$PROJECT_DIR$/ios/flutter_inappbrowser.podspec"
/>
<option
value=
"$PROJECT_DIR$/android/build.gradle"
/>
<option
value=
"$PROJECT_DIR$/android/build.gradle"
/>
<option
value=
"$PROJECT_DIR$/pubspec.yaml"
/>
<option
value=
"$PROJECT_DIR$/CHANGELOG.md"
/>
<option
value=
"$PROJECT_DIR$/CHANGELOG.md"
/>
<option
value=
"$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
/>
<option
value=
"$PROJECT_DIR$/example/lib/main.dart"
/>
<option
value=
"$PROJECT_DIR$/README.md"
/>
<option
value=
"$PROJECT_DIR$/README.md"
/>
<option
value=
"$PROJECT_DIR$/pubspec.yaml"
/>
<option
value=
"$PROJECT_DIR$/example/lib/main.dart"
/>
<option
value=
"$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
/>
</list>
</list>
</option>
</option>
</component>
</component>
...
@@ -219,9 +174,8 @@
...
@@ -219,9 +174,8 @@
<foldersAlwaysOnTop
value=
"true"
/>
<foldersAlwaysOnTop
value=
"true"
/>
</navigator>
</navigator>
<panes>
<panes>
<pane
id=
"Scope"
/>
<pane
id=
"Scratches"
/>
<pane
id=
"AndroidView"
/>
<pane
id=
"AndroidView"
/>
<pane
id=
"Scope"
/>
<pane
id=
"ProjectPane"
>
<pane
id=
"ProjectPane"
>
<subPane>
<subPane>
<expand>
<expand>
...
@@ -244,6 +198,7 @@
...
@@ -244,6 +198,7 @@
</subPane>
</subPane>
<option
name=
"show-excluded-files"
value=
"false"
/>
<option
name=
"show-excluded-files"
value=
"false"
/>
</pane>
</pane>
<pane
id=
"Scratches"
/>
<pane
id=
"PackagesPane"
/>
<pane
id=
"PackagesPane"
/>
</panes>
</panes>
</component>
</component>
...
@@ -438,28 +393,26 @@
...
@@ -438,28 +393,26 @@
<editor
active=
"true"
/>
<editor
active=
"true"
/>
<layout>
<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=
"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=
"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=
"8"
side_tool=
"true"
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=
"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=
"Run"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.32161874"
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=
"false"
show_stripe_button=
"true"
weight=
"0.3258786"
sideWeight=
"0.4973545"
order=
"10"
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=
"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=
"11"
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=
"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=
"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=
"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=
"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.17798743"
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=
"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=
"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=
"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.18956336"
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.22151224"
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=
"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=
"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=
"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=
"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=
"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"
/>
...
@@ -468,7 +421,9 @@
...
@@ -468,7 +421,9 @@
<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=
"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=
"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=
"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.18956336"
sideWeight=
"0.5"
order=
"12"
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=
"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>
<layout-to-restore>
<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"
/>
<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"
/>
...
@@ -514,13 +469,6 @@
...
@@ -514,13 +469,6 @@
<watches-manager
/>
<watches-manager
/>
</component>
</component>
<component
name=
"editorHistoryManager"
>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$PROJECT_DIR$/android/src/main/AndroidManifest.xml"
>
<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>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/flutter_inappbrowser_android.iml"
>
<entry
file=
"file://$PROJECT_DIR$/flutter_inappbrowser_android.iml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"45"
>
<state
relative-caret-position=
"45"
>
...
@@ -666,20 +614,8 @@
...
@@ -666,20 +614,8 @@
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/ios/Classes/InAppBrowser.h"
>
<entry
file=
"file://$PROJECT_DIR$/ios/Classes/InAppBrowser.h"
/>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<entry
file=
"file://$PROJECT_DIR$/ios/Classes/InAppBrowser.m"
/>
<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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"270"
>
<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>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/LICENSE"
>
<entry
file=
"file://$PROJECT_DIR$/LICENSE"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"15"
>
<state
relative-caret-position=
"15"
>
...
@@ -730,7 +666,6 @@
...
@@ -730,7 +666,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"180"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -738,7 +673,6 @@
...
@@ -738,7 +673,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"328"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -746,7 +680,6 @@
...
@@ -746,7 +680,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"240"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -754,7 +687,6 @@
...
@@ -754,7 +687,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"191"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -762,7 +694,6 @@
...
@@ -762,7 +694,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<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=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -770,7 +701,6 @@
...
@@ -770,7 +701,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"435"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -786,7 +716,6 @@
...
@@ -786,7 +716,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<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=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -794,7 +723,6 @@
...
@@ -794,7 +723,6 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-27"
>
<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"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -811,25 +739,26 @@
...
@@ -811,25 +739,26 @@
<state
split_layout=
"SPLIT"
>
<state
split_layout=
"SPLIT"
>
<first_editor
relative-caret-position=
"75"
>
<first_editor
relative-caret-position=
"75"
>
<caret
line=
"5"
column=
"36"
lean-forward=
"false"
selection-start-line=
"5"
selection-start-column=
"36"
selection-end-line=
"5"
selection-end-column=
"36"
/>
<caret
line=
"5"
column=
"36"
lean-forward=
"false"
selection-start-line=
"5"
selection-start-column=
"36"
selection-end-line=
"5"
selection-end-column=
"36"
/>
<folding
/>
</first_editor>
</first_editor>
<second_editor
/>
<second_editor
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/flutter_plugin/lib/flutter_plugin.dart"
>
<entry
file=
"file://$PROJECT_DIR$/example/flutter_plugin/lib/flutter_plugin.dart"
/>
<entry
file=
"file://$PROJECT_DIR$/pubspec.lock"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<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=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/pubspec.yaml"
>
<entry
file=
"file://$PROJECT_DIR$/README.md"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<state
relative-caret-position=
"525"
>
<state
split_layout=
"SPLIT"
>
<caret
line=
"35"
column=
"55"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"55"
selection-end-line=
"35"
selection-end-column=
"55"
/>
<first_editor
relative-caret-position=
"313"
>
<folding
/>
<caret
line=
"300"
column=
"7"
lean-forward=
"true"
selection-start-line=
"300"
selection-start-column=
"7"
selection-end-line=
"300"
selection-end-column=
"7"
/>
</first_editor>
<second_editor
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -837,63 +766,33 @@
...
@@ -837,63 +766,33 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"330"
>
<state
relative-caret-position=
"330"
>
<caret
line=
"22"
column=
"9"
lean-forward=
"true"
selection-start-line=
"22"
selection-start-column=
"9"
selection-end-line=
"22"
selection-end-column=
"9"
/>
<caret
line=
"22"
column=
"9"
lean-forward=
"true"
selection-start-line=
"22"
selection-start-column=
"9"
selection-end-line=
"22"
selection-end-column=
"9"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
lib/flutter_inappbrowser.dart
"
>
<entry
file=
"file://$PROJECT_DIR$/
pubspec.yaml
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<state
relative-caret-position=
"30"
>
<caret
line=
"19"
column=
"2"
lean-forward=
"true"
selection-start-line=
"19"
selection-start-column=
"2"
selection-end-line=
"19"
selection-end-column=
"2"
/>
<caret
line=
"2"
column=
"9"
lean-forward=
"true"
selection-start-line=
"2"
selection-start-column=
"9"
selection-end-line=
"2"
selection-end-column=
"14"
/>
<folding>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"398"
>
<state
relative-caret-position=
"614"
>
<caret
line=
"30"
column=
"50"
lean-forward=
"true"
selection-start-line=
"30"
selection-start-column=
"50"
selection-end-line=
"30"
selection-end-column=
"50"
/>
<caret
line=
"92"
column=
"18"
lean-forward=
"false"
selection-start-line=
"92"
selection-start-column=
"18"
selection-end-line=
"92"
selection-end-column=
"18"
/>
<folding
/>
<folding>
<element
signature=
"e#0#39#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/README.md"
>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"split-provider[text-editor;markdown-preview-editor]"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
split_layout=
"SPLIT"
>
<state
relative-caret-position=
"463"
>
<first_editor
relative-caret-position=
"130"
>
<caret
line=
"233"
column=
"3"
lean-forward=
"false"
selection-start-line=
"233"
selection-start-column=
"3"
selection-end-line=
"233"
selection-end-column=
"3"
/>
<caret
line=
"33"
column=
"19"
lean-forward=
"false"
selection-start-line=
"33"
selection-start-column=
"19"
selection-end-line=
"33"
selection-end-column=
"19"
/>
<folding>
<folding>
<marker
date=
"1537747544313"
expanded=
"false"
signature=
"863:961"
ph=
"..."
/>
<element
signature=
"e#814#834#0"
expanded=
"true"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1005:1113"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1005:2050"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1051:1091"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1143:1717"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1429:1482"
ph=
""""...""""
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1537:1609"
ph=
""""...""""
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1788:1849"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1879:1922"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"1982:2047"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2177:2242"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2283:2872"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2317:2345"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2396:2870"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2424:2865"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2450:2858"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2478:2561"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2507:2550"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2587:2849"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2622:2838"
ph=
"(...)"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"2701:2768"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10453:10461"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10580:10588"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10748:10756"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"10852:10860"
ph=
"{...}"
/>
<marker
date=
"1537747544313"
expanded=
"true"
signature=
"11038:11044"
ph=
"{...}"
/>
</folding>
</folding>
</first_editor>
<second_editor
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
...
android/src/main/AndroidManifest.xml
View file @
c4afea91
...
@@ -4,9 +4,9 @@
...
@@ -4,9 +4,9 @@
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<application
<application
>
android:theme=
"@style/AppTheme"
>
<activity
android:theme=
"@style/AppTheme"
android:name=
".WebViewActivity"
android:configChanges=
"orientation|screenSize"
></activity
>
<activity
android:
name=
".WebView
Activity"
android:configChanges=
"orientation|screenSize"
></activity>
<activity
android:
theme=
"@style/ThemeTransparent"
android:name=
".chrome_custom_tabs.ChromeCustomTabs
Activity"
android:configChanges=
"orientation|screenSize"
></activity>
</application>
</application>
</manifest>
</manifest>
\ No newline at end of file
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserFlutterPlugin.java
View file @
c4afea91
...
@@ -21,9 +21,7 @@
...
@@ -21,9 +21,7 @@
package
com.pichillilorenzo.flutter_inappbrowser
;
package
com.pichillilorenzo.flutter_inappbrowser
;
import
android.annotation.TargetApi
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.annotation.SuppressLint
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.content.pm.PackageManager
;
import
android.content.pm.ResolveInfo
;
import
android.content.pm.ResolveInfo
;
...
@@ -32,7 +30,6 @@ import android.provider.Browser;
...
@@ -32,7 +30,6 @@ import android.provider.Browser;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.support.annotation.RequiresApi
;
import
android.util.JsonReader
;
import
android.util.JsonReader
;
import
android.util.JsonToken
;
import
android.util.JsonToken
;
import
android.webkit.MimeTypeMap
;
import
android.webkit.MimeTypeMap
;
...
@@ -41,6 +38,8 @@ import android.webkit.WebView;
...
@@ -41,6 +38,8 @@ import android.webkit.WebView;
import
android.webkit.WebViewClient
;
import
android.webkit.WebViewClient
;
import
android.util.Log
;
import
android.util.Log
;
import
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs.ChromeCustomTabsActivity
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.StringReader
;
import
java.io.StringReader
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -61,6 +60,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
...
@@ -61,6 +60,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
public
Activity
activity
;
public
Activity
activity
;
public
static
MethodChannel
channel
;
public
static
MethodChannel
channel
;
public
static
WebViewActivity
webViewActivity
;
public
static
WebViewActivity
webViewActivity
;
public
static
ChromeCustomTabsActivity
chromeCustomTabsActivity
;
private
static
final
String
NULL
=
"null"
;
private
static
final
String
NULL
=
"null"
;
protected
static
final
String
LOG_TAG
=
"InAppBrowserFlutterP"
;
protected
static
final
String
LOG_TAG
=
"InAppBrowserFlutterP"
;
...
@@ -102,6 +102,11 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
...
@@ -102,6 +102,11 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
this
.
activity
.
runOnUiThread
(
new
Runnable
()
{
this
.
activity
.
runOnUiThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
options
.
useChromeCustomTabs
)
{
open
(
url
,
options
);
}
else
{
if
(
"_self"
.
equals
(
target
))
{
if
(
"_self"
.
equals
(
target
))
{
Log
.
d
(
LOG_TAG
,
"in self"
);
Log
.
d
(
LOG_TAG
,
"in self"
);
...
@@ -133,7 +138,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
...
@@ -133,7 +138,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
Log
.
d
(
LOG_TAG
,
"in blank"
);
Log
.
d
(
LOG_TAG
,
"in blank"
);
open
(
url
,
options
);
open
(
url
,
options
);
}
}
}
result
.
success
(
true
);
result
.
success
(
true
);
}
}
});
});
...
@@ -360,8 +365,8 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
...
@@ -360,8 +365,8 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
}
}
}
}
p
rivate
void
open
(
final
String
url
,
InAppBrowserOptions
options
)
{
p
ublic
static
void
open
(
final
String
url
,
InAppBrowserOptions
options
)
{
Intent
intent
=
new
Intent
(
activity
,
WebViewActivity
.
class
);
Intent
intent
=
new
Intent
(
registrar
.
activity
(),
(
options
.
useChromeCustomTabs
)
?
ChromeCustomTabsActivity
.
class
:
WebViewActivity
.
class
);
Bundle
extras
=
new
Bundle
();
Bundle
extras
=
new
Bundle
();
extras
.
putString
(
"url"
,
url
);
extras
.
putString
(
"url"
,
url
);
...
@@ -369,7 +374,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
...
@@ -369,7 +374,7 @@ public class InAppBrowserFlutterPlugin implements MethodCallHandler {
intent
.
putExtras
(
extras
);
intent
.
putExtras
(
extras
);
activity
.
startActivity
(
intent
);
registrar
.
activity
()
.
startActivity
(
intent
);
}
}
public
void
loadUrl
(
String
url
,
Map
<
String
,
String
>
headers
,
Result
result
)
{
public
void
loadUrl
(
String
url
,
Map
<
String
,
String
>
headers
,
Result
result
)
{
...
...
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/InAppBrowserOptions.java
View file @
c4afea91
...
@@ -9,28 +9,35 @@ import java.util.HashMap;
...
@@ -9,28 +9,35 @@ import java.util.HashMap;
public
class
InAppBrowserOptions
{
public
class
InAppBrowserOptions
{
boolean
useShouldOverrideUrlLoading
=
false
;
public
boolean
useShouldOverrideUrlLoading
=
false
;
boolean
clearCache
=
false
;
public
boolean
clearCache
=
false
;
String
userAgent
=
""
;
public
String
userAgent
=
""
;
boolean
javaScriptEnabled
=
true
;
public
boolean
javaScriptEnabled
=
true
;
boolean
javaScriptCanOpenWindowsAutomatically
=
false
;
public
boolean
javaScriptCanOpenWindowsAutomatically
=
false
;
boolean
hidden
=
false
;
public
boolean
hidden
=
false
;
boolean
toolbarTop
=
true
;
public
boolean
toolbarTop
=
true
;
String
toolbarTopBackgroundColor
=
""
;
public
String
toolbarTopBackgroundColor
=
""
;
String
toolbarTopFixedTitle
=
""
;
public
String
toolbarTopFixedTitle
=
""
;
boolean
hideUrlBar
=
false
;
public
boolean
hideUrlBar
=
false
;
boolean
mediaPlaybackRequiresUserGesture
=
true
;
public
boolean
mediaPlaybackRequiresUserGesture
=
true
;
boolean
hideTitleBar
=
false
;
public
boolean
hideTitleBar
=
false
;
boolean
closeOnCannotGoBack
=
true
;
public
boolean
closeOnCannotGoBack
=
true
;
boolean
clearSessionCache
=
false
;
public
boolean
clearSessionCache
=
false
;
boolean
builtInZoomControls
=
false
;
public
boolean
builtInZoomControls
=
false
;
boolean
supportZoom
=
true
;
public
boolean
supportZoom
=
true
;
boolean
databaseEnabled
=
false
;
public
boolean
databaseEnabled
=
false
;
boolean
domStorageEnabled
=
false
;
public
boolean
domStorageEnabled
=
false
;
boolean
useWideViewPort
=
true
;
public
boolean
useWideViewPort
=
true
;
boolean
safeBrowsingEnabled
=
true
;
public
boolean
safeBrowsingEnabled
=
true
;
boolean
progressBar
=
true
;
public
boolean
progressBar
=
true
;
public
boolean
useChromeCustomTabs
=
false
;
public
boolean
CCT_addShareButton
=
true
;
public
boolean
CCT_showTitle
=
true
;
public
String
CCT_toolbarColor
=
""
;
public
boolean
CCT_enableUrlBarHiding
=
false
;
public
boolean
CCT_instantAppsEnabled
=
false
;
public
void
parse
(
HashMap
<
String
,
Object
>
options
)
{
public
void
parse
(
HashMap
<
String
,
Object
>
options
)
{
Iterator
it
=
options
.
entrySet
().
iterator
();
Iterator
it
=
options
.
entrySet
().
iterator
();
...
...
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/WebViewActivity.java
View file @
c4afea91
...
@@ -61,7 +61,7 @@ public class WebViewActivity extends AppCompatActivity {
...
@@ -61,7 +61,7 @@ public class WebViewActivity extends AppCompatActivity {
}
}
p
ublic
void
prepareWebView
()
{
p
rivate
void
prepareWebView
()
{
inAppBrowserWebChromeClient
=
new
InAppBrowserWebChromeClient
(
this
);
inAppBrowserWebChromeClient
=
new
InAppBrowserWebChromeClient
(
this
);
webView
.
setWebChromeClient
(
inAppBrowserWebChromeClient
);
webView
.
setWebChromeClient
(
inAppBrowserWebChromeClient
);
...
...
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ChromeCustomTabsActivity.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.support.customtabs.CustomTabsIntent
;
import
android.support.v7.app.AppCompatActivity
;
import
android.util.Log
;
import
com.pichillilorenzo.flutter_inappbrowser.InAppBrowserFlutterPlugin
;
import
com.pichillilorenzo.flutter_inappbrowser.InAppBrowserOptions
;
import
com.pichillilorenzo.flutter_inappbrowser.R
;
import
java.util.HashMap
;
public
class
ChromeCustomTabsActivity
extends
Activity
{
CustomTabsIntent
.
Builder
builder
;
InAppBrowserOptions
options
;
private
CustomTabActivityHelper
customTabActivityHelper
;
private
final
int
CHROME_CUSTOM_TAB_REQUEST_CODE
=
100
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
chrome_custom_tabs_layout
);
Bundle
b
=
getIntent
().
getExtras
();
String
url
=
b
.
getString
(
"url"
);
options
=
new
InAppBrowserOptions
();
options
.
parse
((
HashMap
<
String
,
Object
>)
b
.
getSerializable
(
"options"
));
customTabActivityHelper
=
new
CustomTabActivityHelper
();
builder
=
new
CustomTabsIntent
.
Builder
();
prepareCustomTabs
();
CustomTabsIntent
customTabsIntent
=
builder
.
build
();
customTabActivityHelper
.
openCustomTab
(
this
,
customTabsIntent
,
Uri
.
parse
(
url
),
CHROME_CUSTOM_TAB_REQUEST_CODE
,
new
CustomTabActivityHelper
.
CustomTabFallback
()
{
@Override
public
void
openUri
(
Activity
activity
,
Uri
uri
)
{
InAppBrowserFlutterPlugin
.
open
(
uri
.
toString
(),
options
);
}
});
}
private
void
prepareCustomTabs
()
{
if
(
options
.
CCT_addShareButton
)
builder
.
addDefaultShareMenuItem
();
if
(!
options
.
CCT_toolbarColor
.
isEmpty
())
builder
.
setToolbarColor
(
Color
.
parseColor
(
options
.
CCT_toolbarColor
));
builder
.
setShowTitle
(
options
.
CCT_showTitle
);
if
(
options
.
CCT_enableUrlBarHiding
)
builder
.
enableUrlBarHiding
();
builder
.
setInstantAppsEnabled
(
options
.
CCT_instantAppsEnabled
);
}
@Override
protected
void
onStart
()
{
super
.
onStart
();
customTabActivityHelper
.
bindCustomTabsService
(
this
);
}
@Override
protected
void
onStop
()
{
super
.
onStop
();
customTabActivityHelper
.
unbindCustomTabsService
(
this
);
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
if
(
requestCode
==
CHROME_CUSTOM_TAB_REQUEST_CODE
)
{
finish
();
}
}
}
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabActivityHelper.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.app.Activity
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.support.customtabs.CustomTabsClient
;
import
android.support.customtabs.CustomTabsIntent
;
import
android.support.customtabs.CustomTabsServiceConnection
;
import
android.support.customtabs.CustomTabsSession
;
import
java.util.List
;
import
static
android
.
support
.
v4
.
app
.
ActivityCompat
.
startActivityForResult
;
/**
* This is a helper class to manage the connection to the Custom Tabs Service.
*/
public
class
CustomTabActivityHelper
implements
ServiceConnectionCallback
{
private
CustomTabsSession
mCustomTabsSession
;
private
CustomTabsClient
mClient
;
private
CustomTabsServiceConnection
mConnection
;
private
ConnectionCallback
mConnectionCallback
;
/**
* Opens the URL on a Custom Tab if possible. Otherwise fallsback to opening it on a WebView.
*
* @param activity The host activity.
* @param customTabsIntent a CustomTabsIntent to be used if Custom Tabs is available.
* @param uri the Uri to be opened.
* @param fallback a CustomTabFallback to be used if Custom Tabs is not available.
*/
public
static
void
openCustomTab
(
Activity
activity
,
CustomTabsIntent
customTabsIntent
,
Uri
uri
,
int
requestCode
,
CustomTabFallback
fallback
)
{
String
packageName
=
CustomTabsHelper
.
getPackageNameToUse
(
activity
);
//If we cant find a package name, it means theres no browser that supports
//Chrome Custom Tabs installed. So, we fallback to the webview
if
(
packageName
==
null
)
{
if
(
fallback
!=
null
)
{
fallback
.
openUri
(
activity
,
uri
);
}
}
else
{
customTabsIntent
.
intent
.
setPackage
(
packageName
);
customTabsIntent
.
intent
.
setData
(
uri
);
activity
.
startActivityForResult
(
customTabsIntent
.
intent
,
requestCode
);
}
}
/**
* Unbinds the Activity from the Custom Tabs Service.
* @param activity the activity that is connected to the service.
*/
public
void
unbindCustomTabsService
(
Activity
activity
)
{
if
(
mConnection
==
null
)
return
;
activity
.
unbindService
(
mConnection
);
mClient
=
null
;
mCustomTabsSession
=
null
;
mConnection
=
null
;
}
/**
* Creates or retrieves an exiting CustomTabsSession.
*
* @return a CustomTabsSession.
*/
public
CustomTabsSession
getSession
()
{
if
(
mClient
==
null
)
{
mCustomTabsSession
=
null
;
}
else
if
(
mCustomTabsSession
==
null
)
{
mCustomTabsSession
=
mClient
.
newSession
(
null
);
}
return
mCustomTabsSession
;
}
/**
* Register a Callback to be called when connected or disconnected from the Custom Tabs Service.
* @param connectionCallback
*/
public
void
setConnectionCallback
(
ConnectionCallback
connectionCallback
)
{
this
.
mConnectionCallback
=
connectionCallback
;
}
/**
* Binds the Activity to the Custom Tabs Service.
* @param activity the activity to be binded to the service.
*/
public
void
bindCustomTabsService
(
Activity
activity
)
{
if
(
mClient
!=
null
)
return
;
String
packageName
=
CustomTabsHelper
.
getPackageNameToUse
(
activity
);
if
(
packageName
==
null
)
return
;
mConnection
=
new
ServiceConnection
(
this
);
CustomTabsClient
.
bindCustomTabsService
(
activity
,
packageName
,
mConnection
);
}
/**
* @see {@link CustomTabsSession#mayLaunchUrl(Uri, Bundle, List)}.
* @return true if call to mayLaunchUrl was accepted.
*/
public
boolean
mayLaunchUrl
(
Uri
uri
,
Bundle
extras
,
List
<
Bundle
>
otherLikelyBundles
)
{
if
(
mClient
==
null
)
return
false
;
CustomTabsSession
session
=
getSession
();
if
(
session
==
null
)
return
false
;
return
session
.
mayLaunchUrl
(
uri
,
extras
,
otherLikelyBundles
);
}
@Override
public
void
onServiceConnected
(
CustomTabsClient
client
)
{
mClient
=
client
;
mClient
.
warmup
(
0L
);
if
(
mConnectionCallback
!=
null
)
mConnectionCallback
.
onCustomTabsConnected
();
}
@Override
public
void
onServiceDisconnected
()
{
mClient
=
null
;
mCustomTabsSession
=
null
;
if
(
mConnectionCallback
!=
null
)
mConnectionCallback
.
onCustomTabsDisconnected
();
}
/**
* A Callback for when the service is connected or disconnected. Use those callbacks to
* handle UI changes when the service is connected or disconnected.
*/
public
interface
ConnectionCallback
{
/**
* Called when the service is connected.
*/
void
onCustomTabsConnected
();
/**
* Called when the service is disconnected.
*/
void
onCustomTabsDisconnected
();
}
/**
* To be used as a fallback to open the Uri when Custom Tabs is not available.
*/
public
interface
CustomTabFallback
{
/**
*
* @param activity The Activity that wants to open the Uri.
* @param uri The uri to be opened by the fallback.
*/
void
openUri
(
Activity
activity
,
Uri
uri
);
}
}
\ No newline at end of file
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/CustomTabsHelper.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.IntentFilter
;
import
android.content.pm.PackageManager
;
import
android.content.pm.ResolveInfo
;
import
android.net.Uri
;
import
android.support.customtabs.CustomTabsClient
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Helper class for Custom Tabs.
*/
public
class
CustomTabsHelper
{
private
static
final
String
TAG
=
"CustomTabsHelper"
;
static
final
String
STABLE_PACKAGE
=
"com.android.chrome"
;
static
final
String
BETA_PACKAGE
=
"com.chrome.beta"
;
static
final
String
DEV_PACKAGE
=
"com.chrome.dev"
;
static
final
String
LOCAL_PACKAGE
=
"com.google.android.apps.chrome"
;
private
static
final
String
EXTRA_CUSTOM_TABS_KEEP_ALIVE
=
"android.support.customtabs.extra.KEEP_ALIVE"
;
private
static
final
String
ACTION_CUSTOM_TABS_CONNECTION
=
"android.support.customtabs.action.CustomTabsService"
;
private
static
String
sPackageNameToUse
;
private
CustomTabsHelper
()
{}
public
static
void
addKeepAliveExtra
(
Context
context
,
Intent
intent
)
{
Intent
keepAliveIntent
=
new
Intent
().
setClassName
(
context
.
getPackageName
(),
KeepAliveService
.
class
.
getCanonicalName
());
intent
.
putExtra
(
EXTRA_CUSTOM_TABS_KEEP_ALIVE
,
keepAliveIntent
);
}
/**
* Goes through all apps that handle VIEW intents and have a warmup service. Picks
* the one chosen by the user if there is one, otherwise makes a best effort to return a
* valid package name.
*
* This is <strong>not</strong> threadsafe.
*
* @param context {@link Context} to use for accessing {@link PackageManager}.
* @return The package name recommended to use for connecting to custom tabs related components.
*/
public
static
String
getPackageNameToUse
(
Context
context
)
{
if
(
sPackageNameToUse
!=
null
)
return
sPackageNameToUse
;
PackageManager
pm
=
context
.
getPackageManager
();
// Get default VIEW intent handler.
Intent
activityIntent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
"http://www.example.com"
));
ResolveInfo
defaultViewHandlerInfo
=
pm
.
resolveActivity
(
activityIntent
,
0
);
String
defaultViewHandlerPackageName
=
null
;
if
(
defaultViewHandlerInfo
!=
null
)
{
defaultViewHandlerPackageName
=
defaultViewHandlerInfo
.
activityInfo
.
packageName
;
}
// Get all apps that can handle VIEW intents.
List
<
ResolveInfo
>
resolvedActivityList
=
pm
.
queryIntentActivities
(
activityIntent
,
0
);
List
<
String
>
packagesSupportingCustomTabs
=
new
ArrayList
<>();
for
(
ResolveInfo
info
:
resolvedActivityList
)
{
Intent
serviceIntent
=
new
Intent
();
serviceIntent
.
setAction
(
ACTION_CUSTOM_TABS_CONNECTION
);
serviceIntent
.
setPackage
(
info
.
activityInfo
.
packageName
);
if
(
pm
.
resolveService
(
serviceIntent
,
0
)
!=
null
)
{
packagesSupportingCustomTabs
.
add
(
info
.
activityInfo
.
packageName
);
}
}
// Now packagesSupportingCustomTabs contains all apps that can handle both VIEW intents
// and service calls.
if
(
packagesSupportingCustomTabs
.
isEmpty
())
{
sPackageNameToUse
=
null
;
}
else
if
(
packagesSupportingCustomTabs
.
size
()
==
1
)
{
sPackageNameToUse
=
packagesSupportingCustomTabs
.
get
(
0
);
}
else
if
(!
TextUtils
.
isEmpty
(
defaultViewHandlerPackageName
)
&&
!
hasSpecializedHandlerIntents
(
context
,
activityIntent
)
&&
packagesSupportingCustomTabs
.
contains
(
defaultViewHandlerPackageName
))
{
sPackageNameToUse
=
defaultViewHandlerPackageName
;
}
else
if
(
packagesSupportingCustomTabs
.
contains
(
STABLE_PACKAGE
))
{
sPackageNameToUse
=
STABLE_PACKAGE
;
}
else
if
(
packagesSupportingCustomTabs
.
contains
(
BETA_PACKAGE
))
{
sPackageNameToUse
=
BETA_PACKAGE
;
}
else
if
(
packagesSupportingCustomTabs
.
contains
(
DEV_PACKAGE
))
{
sPackageNameToUse
=
DEV_PACKAGE
;
}
else
if
(
packagesSupportingCustomTabs
.
contains
(
LOCAL_PACKAGE
))
{
sPackageNameToUse
=
LOCAL_PACKAGE
;
}
return
sPackageNameToUse
;
}
/**
* Used to check whether there is a specialized handler for a given intent.
* @param intent The intent to check with.
* @return Whether there is a specialized handler for the given intent.
*/
private
static
boolean
hasSpecializedHandlerIntents
(
Context
context
,
Intent
intent
)
{
try
{
PackageManager
pm
=
context
.
getPackageManager
();
List
<
ResolveInfo
>
handlers
=
pm
.
queryIntentActivities
(
intent
,
PackageManager
.
GET_RESOLVED_FILTER
);
if
(
handlers
==
null
||
handlers
.
size
()
==
0
)
{
return
false
;
}
for
(
ResolveInfo
resolveInfo
:
handlers
)
{
IntentFilter
filter
=
resolveInfo
.
filter
;
if
(
filter
==
null
)
continue
;
if
(
filter
.
countDataAuthorities
()
==
0
||
filter
.
countDataPaths
()
==
0
)
continue
;
if
(
resolveInfo
.
activityInfo
==
null
)
continue
;
return
true
;
}
}
catch
(
RuntimeException
e
)
{
Log
.
e
(
TAG
,
"Runtime exception while getting specialized handlers"
);
}
return
false
;
}
/**
* @return All possible chrome package names that provide custom tabs feature.
*/
public
static
String
[]
getPackages
()
{
return
new
String
[]{
""
,
STABLE_PACKAGE
,
BETA_PACKAGE
,
DEV_PACKAGE
,
LOCAL_PACKAGE
};
}
}
\ No newline at end of file
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/KeepAliveService.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.app.Service
;
import
android.content.Intent
;
import
android.os.Binder
;
import
android.os.IBinder
;
/**
* Empty service used by the custom tab to bind to, raising the application's importance.
*/
public
class
KeepAliveService
extends
Service
{
private
static
final
Binder
sBinder
=
new
Binder
();
@Override
public
IBinder
onBind
(
Intent
intent
)
{
return
sBinder
;
}
}
\ No newline at end of file
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnection.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.content.ComponentName
;
import
android.support.customtabs.CustomTabsClient
;
import
android.support.customtabs.CustomTabsServiceConnection
;
import
java.lang.ref.WeakReference
;
/**
* Implementation for the CustomTabsServiceConnection that avoids leaking the
* ServiceConnectionCallback
*/
public
class
ServiceConnection
extends
CustomTabsServiceConnection
{
// A weak reference to the ServiceConnectionCallback to avoid leaking it.
private
WeakReference
<
ServiceConnectionCallback
>
mConnectionCallback
;
public
ServiceConnection
(
ServiceConnectionCallback
connectionCallback
)
{
mConnectionCallback
=
new
WeakReference
<>(
connectionCallback
);
}
@Override
public
void
onCustomTabsServiceConnected
(
ComponentName
name
,
CustomTabsClient
client
)
{
ServiceConnectionCallback
connectionCallback
=
mConnectionCallback
.
get
();
if
(
connectionCallback
!=
null
)
connectionCallback
.
onServiceConnected
(
client
);
}
@Override
public
void
onServiceDisconnected
(
ComponentName
name
)
{
ServiceConnectionCallback
connectionCallback
=
mConnectionCallback
.
get
();
if
(
connectionCallback
!=
null
)
connectionCallback
.
onServiceDisconnected
();
}
}
android/src/main/java/com/pichillilorenzo/flutter_inappbrowser/chrome_custom_tabs/ServiceConnectionCallback.java
0 → 100644
View file @
c4afea91
package
com.pichillilorenzo.flutter_inappbrowser.chrome_custom_tabs
;
import
android.support.customtabs.CustomTabsClient
;
/**
* Callback for events when connecting and disconnecting from Custom Tabs Service.
*/
public
interface
ServiceConnectionCallback
{
/**
* Called when the service is connected.
* @param client a CustomTabsClient
*/
void
onServiceConnected
(
CustomTabsClient
client
);
/**
* Called when the service is disconnected.
*/
void
onServiceDisconnected
();
}
\ No newline at end of file
android/src/main/res/layout/chrome_custom_tabs_layout.xml
0 → 100644
View file @
c4afea91
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</LinearLayout>
android/src/main/res/values/styles.xml
View file @
c4afea91
...
@@ -3,4 +3,13 @@
...
@@ -3,4 +3,13 @@
<style
name=
"AppTheme"
parent=
"Theme.AppCompat.Light"
>
<style
name=
"AppTheme"
parent=
"Theme.AppCompat.Light"
>
</style>
</style>
<style
name=
"ThemeTransparent"
parent=
"android:Theme"
>
<item
name=
"android:windowIsTranslucent"
>
true
</item>
<item
name=
"android:windowBackground"
>
@android:color/transparent
</item>
<item
name=
"android:windowContentOverlay"
>
@null
</item>
<item
name=
"android:windowNoTitle"
>
true
</item>
<item
name=
"android:windowIsFloating"
>
true
</item>
<item
name=
"android:backgroundDimEnabled"
>
false
</item>
</style>
</resources>
</resources>
example/lib/main.dart
View file @
c4afea91
...
@@ -87,9 +87,10 @@ class _MyAppState extends State<MyApp> {
...
@@ -87,9 +87,10 @@ class _MyAppState extends State<MyApp> {
body:
new
Center
(
body:
new
Center
(
child:
new
RaisedButton
(
onPressed:
()
{
child:
new
RaisedButton
(
onPressed:
()
{
inAppBrowser
.
open
(
"https://flutter.io/"
,
options:
{
inAppBrowser
.
open
(
"https://flutter.io/"
,
options:
{
"useChromeCustomTabs"
:
true
,
//"hidden": true,
//"hidden": true,
//"toolbarTopFixedTitle": "Fixed title",
//"toolbarTopFixedTitle": "Fixed title",
"useShouldOverrideUrlLoading"
:
true
//
"useShouldOverrideUrlLoading": true
//"hideUrlBar": true,
//"hideUrlBar": true,
//"toolbarTop": false,
//"toolbarTop": false,
//"toolbarBottom": false
//"toolbarBottom": false
...
...
pubspec.yaml
View file @
c4afea91
name
:
flutter_inappbrowser
name
:
flutter_inappbrowser
description
:
A Flutter plugin that allows you to open an in-app browser window. (inspired by the popular cordova-plugin-inappbrowser).
description
:
A Flutter plugin that allows you to open an in-app browser window. (inspired by the popular cordova-plugin-inappbrowser).
version
:
0.1.
0
version
:
0.1.
1
author
:
Lorenzo Pichilli <pichillilorenzo@gmail.com>
author
:
Lorenzo Pichilli <pichillilorenzo@gmail.com>
homepage
:
https://github.com/pichillilorenzo/flutter_inappbrowser
homepage
:
https://github.com/pichillilorenzo/flutter_inappbrowser
...
...
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