Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
48d4c9d
make deps path based
bparrishMines Mar 24, 2023
4ad0174
interface implementation
bparrishMines Mar 24, 2023
a51decc
support for permissionrequest
bparrishMines Mar 24, 2023
c6880bb
add method to webchromeclient
bparrishMines Mar 24, 2023
896ce9b
android impl without tests
bparrishMines Mar 24, 2023
f2f6f2a
remove imports
bparrishMines Mar 24, 2023
d7a54d0
update platform interface
bparrishMines Mar 24, 2023
38a727d
update interface again
bparrishMines Mar 24, 2023
44a0c2e
finish android implementation
bparrishMines Mar 24, 2023
8588900
change to platformwebviewpermissionrequest
bparrishMines Mar 24, 2023
631cfb8
version bump formatting and app facing implementation
bparrishMines Mar 24, 2023
4505f04
test constants
bparrishMines Mar 24, 2023
df40eca
redundant version checks
bparrishMines Mar 24, 2023
83c428a
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 6, 2023
e58ea0d
undo ios mocks change
bparrishMines Apr 6, 2023
07c3ac1
update webviewpermissionrequest
bparrishMines Apr 7, 2023
c8466f4
update app-facing package
bparrishMines Apr 7, 2023
e0801bc
add wkwebview method dart impl
bparrishMines Apr 7, 2023
da4a45f
finish dart ios code with failing tests
bparrishMines Apr 7, 2023
bfd6f27
formatting
bparrishMines Apr 7, 2023
e63f3e9
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 8, 2023
09eea9a
fix tests
bparrishMines Apr 8, 2023
c7606bb
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 10, 2023
10ef24c
controller test
bparrishMines Apr 10, 2023
d516b34
webview data converters
bparrishMines Apr 10, 2023
85f2b56
implement callback
bparrishMines Apr 10, 2023
5fbca14
update app-facing package
bparrishMines Apr 10, 2023
482b7c1
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 10, 2023
a291c52
fix lint errors
bparrishMines Apr 10, 2023
fb2b779
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 11, 2023
eeff573
try fix test
bparrishMines Apr 11, 2023
7a9a039
fix objc test
bparrishMines Apr 11, 2023
356e8ad
prompt by default
bparrishMines Apr 11, 2023
4800b3a
comment
bparrishMines Apr 11, 2023
fd3af75
test that ios works
bparrishMines Apr 11, 2023
7570c5b
add permissions to debug camera access
bparrishMines Apr 11, 2023
8946b87
reference permissions and version bump
bparrishMines Apr 11, 2023
23121e5
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 11, 2023
7d71719
undo webview_flutter change
bparrishMines Apr 11, 2023
6717cf4
improve docs and fix tests
bparrishMines Apr 11, 2023
d566b5e
naming
bparrishMines Apr 11, 2023
8e39a28
add version check
bparrishMines Apr 11, 2023
922028e
fix integration test
bparrishMines Apr 11, 2023
e592ae1
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 13, 2023
adc7f3c
add baseline back
bparrishMines Apr 13, 2023
9a57b03
fix lint
bparrishMines Apr 13, 2023
96b1515
add call to observe URL back
bparrishMines Apr 13, 2023
bfe3d64
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 15, 2023
44aaf7e
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 18, 2023
4f4c253
some of the review comments
bparrishMines Apr 18, 2023
bef6efa
fix methods, docs and make template naming consistent
bparrishMines Apr 19, 2023
f155afb
update dataconverter class names
bparrishMines Apr 19, 2023
f8b2691
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 19, 2023
68610f1
fix old method names
bparrishMines Apr 19, 2023
07a074b
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 19, 2023
a33ea19
docs and added a test
bparrishMines Apr 19, 2023
0638c30
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 20, 2023
d9c4a6e
add a comment about not recognizing permissions
bparrishMines Apr 20, 2023
a6496b8
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 21, 2023
fd13fce
Merge branch 'main' of github.com:flutter/packages into webview_permi…
bparrishMines Apr 21, 2023
ec80236
version bump
bparrishMines Apr 21, 2023
b065c45
move macro
bparrishMines Apr 21, 2023
535374b
fix files
bparrishMines Apr 21, 2023
b8a409f
last file
bparrishMines Apr 21, 2023
ba07eb1
export main_file.PlatformWebViewPermissionRequest
bparrishMines Apr 21, 2023
8715691
undo the export
bparrishMines Apr 21, 2023
520bf59
add more documention
bparrishMines Apr 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
implement callback
  • Loading branch information
bparrishMines committed Apr 10, 2023
commit 85f2b561eecae8b66a992be9a6cdb2365b88484c
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,46 @@ - (void)testOnCreateWebViewForDelegateWithIdentifier {
isKindOfClass:[FWFWKNavigationActionData class]]
completion:OCMOCK_ANY]);
}

- (void)testRequestMediaCapturePermissionForOrigin {
FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init];

FWFUIDelegate *mockDelegate = [self mockDelegateWithManager:instanceManager identifier:0];
FWFUIDelegateFlutterApiImpl *mockFlutterAPI = [self mockFlutterApiWithManager:instanceManager];

OCMStub([mockDelegate UIDelegateAPI]).andReturn(mockFlutterAPI);

WKWebView *mockWebView = OCMClassMock([WKWebView class]);
[instanceManager addDartCreatedInstance:mockWebView withIdentifier:1];

WKSecurityOrigin *mockSecurityOrigin = OCMClassMock([WKSecurityOrigin class]);
OCMStub([mockSecurityOrigin host]).andReturn(@"");
OCMStub([mockSecurityOrigin port]).andReturn(0);
OCMStub([mockSecurityOrigin protocol]).andReturn(@"");

WKFrameInfo *mockFrameInfo = OCMClassMock([WKFrameInfo class]);
OCMStub([mockFrameInfo isMainFrame]).andReturn(YES);
OCMStub([mockNavigationAction targetFrame]).andReturn(mockFrameInfo);

[mockDelegate webView:mockWebView
requestMediaCapturePermissionForOrigin:mockSecurityOrigin
initiatedByFrame:mockFrameInfo
type:WKMediaCaptureTypeMicrophone
decisionHandler:^(WKPermissionDecision decision){
}];

OCMVerify([mockFlutterAPI
requestMediaCapturePermissionForDelegateWithIdentifier:@0
webViewIdentifier:@1
origin:[OCMArg isKindOfClass:
[FWFWKSecurityOriginData
class]]
frame:[OCMArg
isKindOfClass:[FWFWKFrameInfoData
class]]
type:[OCMArg isKindOfClass:
[FWFWKMediaCaptureTypeData
class]]
completion:OCMOCK_ANY]);
}
@end
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,38 @@ - (void)onCreateWebViewForDelegate:(FWFUIDelegate *)instance
navigationAction:navigationActionData
completion:completion];
}

- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(FWFUIDelegate *)instance
webView:(WKWebView *)webView
origin:(WKSecurityOrigin *)origin
frame:(WKFrameInfo *)frame
type:(FWFWKMediaCaptureType)type
completion:
(void (^)(WKPermissionDecision))completion
API_AVAILABLE(ios(15.0)) {
[self
requestMediaCapturePermissionForDelegateWithIdentifier:@([self
identifierForDelegate:instance])
webViewIdentifier:
@([self.instanceManager
identifierWithStrongReferenceForInstance:
webView])
origin:
FWFWKSecurityOriginDataFromWKSecurityOrigin(
origin)
frame:FWFWKFrameInfoDataFromWKFrameInfo(
frame)
type:
FWFWKMediaCaptureTypeDataFromWKMediaCaptureType(
type)
completion:^(
FWFWKPermissionDecisionData *decision,
FlutterError *error) {
NSAssert(!error, @"%@", error);
completion(
FWFWKPermissionDecisionFromData(decision));
}];
}
@end

@implementation FWFUIDelegate
Expand All @@ -82,6 +114,23 @@ - (WKWebView *)webView:(WKWebView *)webView
}];
return nil;
}

- (void)webView:(WKWebView *)webView
requestMediaCapturePermissionForOrigin:(WKSecurityOrigin *)origin
initiatedByFrame:(WKFrameInfo *)frame
type:(WKMediaCaptureType)type
decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
API_AVAILABLE(ios(15.0)) {
[self.UIDelegateAPI
requestMediaCapturePermissionForDelegateWithIdentifier:self
webView:webView
origin:origin
frame:frame
type:type
completion:^(WKPermissionDecision decision) {
decisionHandler(decision);
}];
}
@end

@interface FWFUIDelegateHostApiImpl ()
Expand Down