This is an automated email from the ASF dual-hosted git repository.

manuelbeck pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-plugin-camera.git


The following commit(s) were added to refs/heads/master by this push:
     new 90ad137  fix(ios)! remove iPadOS popover code (#941)
90ad137 is described below

commit 90ad137398e87d219d2e1eeb8b0f61273898a700
Author: Manuel Beck <[email protected]>
AuthorDate: Thu Jan 15 17:26:37 2026 +0100

    fix(ios)! remove iPadOS popover code (#941)
    
    - On iPadOS it was possible to configure a popover for setting the 
position, width and arrow position of the popover.  The code used the 
deprecated `UIPopoverController`, which would have to be fixed. To keep the 
plugin also maintainable, this was removed.
    - The popover could repositioned with a `CameraPopoverHandle` on a 
`window.onorientationchange`. This was removed also.
    - Removed documentation for popover from `README.md`
---
 README.md                                          |  77 +-----------
 plugin.xml                                         |  12 --
 src/ios/CDVCamera.h                                |   6 -
 src/ios/CDVCamera.m                                | 134 +++------------------
 .../CDVCameraTest/CDVCameraLibTests/CameraTest.m   |  16 +--
 tests/tests.js                                     |  10 +-
 types/index.d.ts                                   |  53 --------
 www/Camera.js                                      |   8 +-
 www/CameraConstants.js                             |  11 --
 www/CameraPopoverHandle.js                         |  32 -----
 www/CameraPopoverOptions.js                        |  56 ---------
 www/ios/CameraPopoverHandle.js                     |  66 ----------
 12 files changed, 20 insertions(+), 461 deletions(-)

diff --git a/README.md b/README.md
index ddf0dff..1eba25f 100644
--- a/README.md
+++ b/README.md
@@ -118,12 +118,8 @@ To add these entries into the `info.plist`, you can use 
the `edit-config` tag in
     * [.EncodingType](#module_Camera.EncodingType) : <code>enum</code>
     * [.MediaType](#module_Camera.MediaType) : <code>enum</code>
     * [.PictureSourceType](#module_Camera.PictureSourceType) : 
<code>enum</code>
-    * [.PopoverArrowDirection](#module_Camera.PopoverArrowDirection) : 
<code>enum</code>
     * [.Direction](#module_Camera.Direction) : <code>enum</code>
 
-* [CameraPopoverHandle](#module_CameraPopoverHandle)
-* [CameraPopoverOptions](#module_CameraPopoverOptions)
-
 ---
 
 <a name="module_camera"></a>
@@ -312,7 +308,6 @@ Optional parameters to customize the camera settings.
 | mediaType | <code>[MediaType](#module_Camera.MediaType)</code> | 
<code>PICTURE</code> | Set the type of media to select from.  Only works when 
`PictureSourceType` is `PHOTOLIBRARY` or `SAVEDPHOTOALBUM`. |
 | correctOrientation | <code>Boolean</code> |  | Rotate the image to correct 
for the orientation of the device during capture. |
 | saveToPhotoAlbum | <code>Boolean</code> |  | Save the image to the photo 
album on the device after capture.<br />See [Android 
Quirks](#cameragetpicturesuccesscallback-errorcallback-options). |
-| popoverOptions | 
<code>[CameraPopoverOptions](#module_CameraPopoverOptions)</code> |  | iOS-only 
options that specify popover location in iPad. |
 | cameraDirection | <code>[Direction](#module_Camera.Direction)</code> | 
<code>BACK</code> | Choose the camera to use (front- or back-facing). |
 
 ---
@@ -370,24 +365,6 @@ Defines the output format of `Camera.getPicture` call.
 | CAMERA | <code>number</code> | <code>1</code> | Take picture from camera |
 | SAVEDPHOTOALBUM | <code>number</code> | <code>2</code> | Same as 
`PHOTOLIBRARY`, when running on Android or iOS 14+. On iOS older than 14, an 
image can only be chosen from the device's Camera Roll album with this setting. 
|
 
-
-
-<a name="module_Camera.PopoverArrowDirection"></a>
-
-### Camera.PopoverArrowDirection : <code>enum</code>
-Matches iOS UIPopoverArrowDirection constants to specify arrow location on 
popover.
-
-**Kind**: static enum property of <code>[Camera](#module_Camera)</code>
-**Properties**
-
-| Name | Type | Default |
-| --- | --- | --- |
-| ARROW_UP | <code>number</code> | <code>1</code> |
-| ARROW_DOWN | <code>number</code> | <code>2</code> |
-| ARROW_LEFT | <code>number</code> | <code>4</code> |
-| ARROW_RIGHT | <code>number</code> | <code>8</code> |
-| ARROW_ANY | <code>number</code> | <code>15</code> |
-
 <a name="module_Camera.Direction"></a>
 
 ### Camera.Direction : <code>enum</code>
@@ -401,58 +378,6 @@ Matches iOS UIPopoverArrowDirection constants to specify 
arrow location on popov
 
 ---
 
-<a name="module_CameraPopoverOptions"></a>
-
-## CameraPopoverOptions
-iOS-only parameters that specify the anchor element location and arrow
-direction of the popover when selecting images from an iPad's library
-or album.
-Note that the size of the popover may change to adjust to the
-direction of the arrow and orientation of the screen.  Make sure to
-account for orientation changes when specifying the anchor element
-location.
-
-
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [x] | <code>Number</code> | <code>0</code> | x pixel coordinate of screen 
element onto which to anchor the popover. |
-| [y] | <code>Number</code> | <code>32</code> | y pixel coordinate of screen 
element onto which to anchor the popover. |
-| [width] | <code>Number</code> | <code>320</code> | width, in pixels, of the 
screen element onto which to anchor the popover. |
-| [height] | <code>Number</code> | <code>480</code> | height, in pixels, of 
the screen element onto which to anchor the popover. |
-| [arrowDir] | 
<code>[PopoverArrowDirection](#module_Camera.PopoverArrowDirection)</code> | 
<code>ARROW_ANY</code> | Direction the arrow on the popover should point. |
-| [popoverWidth] | <code>Number</code> | <code>0</code> | width of the popover 
(0 or not specified will use apple's default width). |
-| [popoverHeight] | <code>Number</code> | <code>0</code> | height of the 
popover (0 or not specified will use apple's default height). |
-
----
-
-<a name="module_CameraPopoverHandle"></a>
-
-## CameraPopoverHandle
-A handle to an image picker popover.
-
-__Supported Platforms__
-
-- iOS
-
-**Example**
-```js
-navigator.camera.getPicture(onSuccess, onFail,
-{
-    destinationType: Camera.DestinationType.FILE_URI,
-    sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
-    popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, 
Camera.PopoverArrowDirection.ARROW_ANY, 300, 600)
-});
-
-// Reposition the popover if the orientation changes.
-window.onorientationchange = function() {
-    var cameraPopoverHandle = new CameraPopoverHandle();
-    var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, 
Camera.PopoverArrowDirection.ARROW_ANY, 400, 500);
-    cameraPopoverHandle.setPosition(cameraPopoverOptions);
-}
-```
----
-
-
 ## `camera.getPicture` Errata
 
 #### Example <a name="camera-getPicture-examples"></a>
@@ -525,7 +450,7 @@ Can only return photos as data URI image.
 
 Including a JavaScript `alert()` in either of the callback functions
 can cause problems.  Wrap the alert within a `setTimeout()` to allow
-the iOS image picker or popover to fully close before the alert
+the iOS image picker to fully close before the alert
 displays:
 
 ```javascript
diff --git a/plugin.xml b/plugin.xml
index acfc9ff..b0ac236 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -39,10 +39,6 @@
         <clobbers target="Camera" />
     </js-module>
 
-    <js-module src="www/CameraPopoverOptions.js" name="CameraPopoverOptions">
-        <clobbers target="CameraPopoverOptions" />
-    </js-module>
-
     <js-module src="www/Camera.js" name="camera">
         <clobbers target="navigator.camera" />
     </js-module>
@@ -91,10 +87,6 @@
 
         <preference name="ANDROIDX_CORE_VERSION" default="1.6.+"/>
         <framework src="androidx.core:core:$ANDROIDX_CORE_VERSION" />
-
-        <js-module src="www/CameraPopoverHandle.js" name="CameraPopoverHandle">
-            <clobbers target="CameraPopoverHandle" />
-          </js-module>
       </platform>
 
      <!-- ios -->
@@ -106,10 +98,6 @@
              <preference name="CameraUsesGeolocation" value="false" />
          </config-file>
 
-         <js-module src="www/ios/CameraPopoverHandle.js" 
name="CameraPopoverHandle">
-            <clobbers target="CameraPopoverHandle" />
-         </js-module>
-
          <header-file src="src/ios/UIImage+CropScaleOrientation.h" />
          <source-file src="src/ios/UIImage+CropScaleOrientation.m" />
          <header-file src="src/ios/CDVCamera.h" />
diff --git a/src/ios/CDVCamera.h b/src/ios/CDVCamera.h
index 1bbc167..37f4fcf 100644
--- a/src/ios/CDVCamera.h
+++ b/src/ios/CDVCamera.h
@@ -72,10 +72,8 @@ typedef NSUInteger CDVMediaType;
 @property (assign) BOOL allowsEditing;
 @property (assign) BOOL correctOrientation;
 @property (assign) BOOL saveToPhotoAlbum;
-@property (strong) NSDictionary* popoverOptions;
 @property (assign) UIImagePickerControllerCameraDevice cameraDirection;
 
-@property (assign) BOOL popoverSupported;
 @property (assign) BOOL usesGeolocation;
 @property (assign) BOOL cropToSize;
 
@@ -89,7 +87,6 @@ typedef NSUInteger CDVMediaType;
 
 @property (copy)   NSString* callbackId;
 @property (copy)   NSString* postUrl;
-@property (strong) UIPopoverController* pickerPopoverController;
 @property (assign) BOOL cropToSize;
 @property (strong) UIView* webView;
 
@@ -103,14 +100,12 @@ typedef NSUInteger CDVMediaType;
 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 // Always true on XCode12+
 @interface CDVCamera : CDVPlugin <UIImagePickerControllerDelegate,
                        UINavigationControllerDelegate,
-                       UIPopoverControllerDelegate,
                        CLLocationManagerDelegate,
                        PHPickerViewControllerDelegate>
 {}
 #else
 @interface CDVCamera : CDVPlugin <UIImagePickerControllerDelegate,
                        UINavigationControllerDelegate,
-                       UIPopoverControllerDelegate,
                        CLLocationManagerDelegate>
 {}
 #endif
@@ -122,7 +117,6 @@ typedef NSUInteger CDVMediaType;
 
 - (void)takePicture:(CDVInvokedUrlCommand*)command;
 - (void)cleanup:(CDVInvokedUrlCommand*)command;
-- (void)repositionPopover:(CDVInvokedUrlCommand*)command;
 
 // UIImagePickerControllerDelegate methods
 - (void)imagePickerController:(UIImagePickerController*)picker 
didFinishPickingMediaWithInfo:(NSDictionary*)info;
diff --git a/src/ios/CDVCamera.m b/src/ios/CDVCamera.m
index d1c417d..0284351 100644
--- a/src/ios/CDVCamera.m
+++ b/src/ios/CDVCamera.m
@@ -37,8 +37,6 @@
 
 #define CDV_PHOTO_PREFIX @"cdv_photo_"
 
-static NSSet* org_apache_cordova_validArrowDirections;
-
 static NSString* toBase64(NSData* data)
 {
     SEL s1 = NSSelectorFromString(@"cdv_base64EncodedString");
@@ -84,10 +82,8 @@ static NSString* MIME_JPEG    = @"image/jpeg";
     pictureOptions.allowsEditing = [[command argumentAtIndex:7 
withDefault:@(NO)] boolValue];
     pictureOptions.correctOrientation = [[command argumentAtIndex:8 
withDefault:@(NO)] boolValue];
     pictureOptions.saveToPhotoAlbum = [[command argumentAtIndex:9 
withDefault:@(NO)] boolValue];
-    pictureOptions.popoverOptions = [command argumentAtIndex:10 
withDefault:nil];
-    pictureOptions.cameraDirection = [[command argumentAtIndex:11 
withDefault:@(UIImagePickerControllerCameraDeviceRear)] unsignedIntegerValue];
+    pictureOptions.cameraDirection = [[command argumentAtIndex:10 
withDefault:@(UIImagePickerControllerCameraDeviceRear)] unsignedIntegerValue];
 
-    pictureOptions.popoverSupported = NO;
     pictureOptions.usesGeolocation = NO;
 
     return pictureOptions;
@@ -104,11 +100,6 @@ static NSString* MIME_JPEG    = @"image/jpeg";
 
 @implementation CDVCamera
 
-+ (void)initialize
-{
-    org_apache_cordova_validArrowDirections = [[NSSet alloc] 
initWithObjects:[NSNumber numberWithInt:UIPopoverArrowDirectionUp], [NSNumber 
numberWithInt:UIPopoverArrowDirectionDown], [NSNumber 
numberWithInt:UIPopoverArrowDirectionLeft], [NSNumber 
numberWithInt:UIPopoverArrowDirectionRight], [NSNumber 
numberWithInt:UIPopoverArrowDirectionAny], nil];
-}
-
 @synthesize hasPendingOperation, pickerController, locationManager;
 
 - (NSURL*)urlTransformer:(NSURL*)url
@@ -135,12 +126,6 @@ static NSString* MIME_JPEG    = @"image/jpeg";
     return [(NSNumber*)useGeo boolValue];
 }
 
-- (BOOL)popoverSupported
-{
-    return (NSClassFromString(@"UIPopoverController") != nil) &&
-           (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
-}
-
 /**
  Called by JS function navigator.camera.getPicture(cameraSuccess, cameraError, 
cameraOptions)
  which will invoke the camera or photo picker to capture or select an image or 
video.
@@ -156,8 +141,7 @@ static NSString* MIME_JPEG    = @"image/jpeg";
    - index 7 (allowsEditing): NSNumber(BOOL). Allow user to crop/edit. 
Default: NO.
    - index 8 (correctOrientation): NSNumber(BOOL). Fix EXIF orientation. 
Default: NO.
    - index 9 (saveToPhotoAlbum): NSNumber(BOOL). Save captured image to 
Photos. Default: NO.
-   - index 10 (popoverOptions): NSDictionary (iPad only). Popover positioning 
and sizing.
-   - index 11 (cameraDirection): NSNumber 
(UIImagePickerControllerCameraDevice). Front/Rear. Default: Rear.
+   - index 10 (cameraDirection): NSNumber 
(UIImagePickerControllerCameraDevice). Front/Rear. Default: Rear.
 
  @discussion
  This method validates hardware availability and permissions (camera or photo 
library),
@@ -171,7 +155,6 @@ static NSString* MIME_JPEG    = @"image/jpeg";
 
     [self.commandDelegate runInBackground:^{
         CDVPictureOptions* pictureOptions = [CDVPictureOptions 
createFromTakePictureArguments:command];
-        pictureOptions.popoverSupported = [weakSelf popoverSupported];
         pictureOptions.usesGeolocation = [weakSelf usesGeolocation];
         pictureOptions.cropToSize = NO;
 
@@ -279,12 +262,11 @@ static NSString* MIME_JPEG    = @"image/jpeg";
  - Ensures presentation occurs on the main thread.
  
  Behavior:
- - Dismisses any visible popover before presenting a new picker (iPad).
- - Configures delegates, media types, and popover presentation as needed.
+ - Configures delegates and media types
  - Updates `hasPendingOperation` to reflect plugin activity state.
  
  @param callbackId The Cordova callback identifier used to deliver results 
back to JavaScript.
- @param pictureOptions Parsed camera options (sourceType, mediaType, 
allowsEditing, popoverOptions, etc.).
+ @param pictureOptions Parsed camera options (sourceType, mediaType, 
allowsEditing, etc.).
  */
 - (void)showCameraPicker:(NSString*)callbackId 
withOptions:(CDVPictureOptions*)pictureOptions
 {
@@ -309,28 +291,12 @@ static NSString* MIME_JPEG    = @"image/jpeg";
         cameraPicker.callbackId = callbackId;
         // we need to capture this state for memory warnings that dealloc this 
object
         cameraPicker.webView = self.webView;
-
-        // If a popover is already open, close it; we only want one at a time.
-        if (([[self pickerController] pickerPopoverController] != nil) && 
[[[self pickerController] pickerPopoverController] isPopoverVisible]) {
-            [[[self pickerController] pickerPopoverController] 
dismissPopoverAnimated:YES];
-            [[[self pickerController] pickerPopoverController] 
setDelegate:nil];
-            [[self pickerController] setPickerPopoverController:nil];
-        }
-
-        if ([self popoverSupported] && (pictureOptions.sourceType != 
UIImagePickerControllerSourceTypeCamera)) {
-            if (cameraPicker.pickerPopoverController == nil) {
-                cameraPicker.pickerPopoverController = 
[[NSClassFromString(@"UIPopoverController") alloc] 
initWithContentViewController:cameraPicker];
-            }
-            [self displayPopover:pictureOptions.popoverOptions];
+        cameraPicker.modalPresentationStyle = 
UIModalPresentationCurrentContext;
+        [self.viewController presentViewController:cameraPicker
+                                          animated:YES
+                                        completion:^{
             self.hasPendingOperation = NO;
-        } else {
-            cameraPicker.modalPresentationStyle = 
UIModalPresentationCurrentContext;
-            [self.viewController presentViewController:cameraPicker
-                                              animated:YES
-                                            completion:^{
-                self.hasPendingOperation = NO;
-            }];
-        }
+        }];
     });
 }
 
@@ -526,17 +492,6 @@ static NSString* MIME_JPEG    = @"image/jpeg";
 }
 #endif
 
-- (void)repositionPopover:(CDVInvokedUrlCommand*)command
-{
-    if (([[self pickerController] pickerPopoverController] != nil) && [[[self 
pickerController] pickerPopoverController] isPopoverVisible]) {
-
-        [[[self pickerController] pickerPopoverController] 
dismissPopoverAnimated:NO];
-
-        NSDictionary* options = [command argumentAtIndex:0 withDefault:nil];
-        [self displayPopover:options];
-    }
-}
-
 - (NSInteger)integerValueForKey:(NSDictionary*)dict key:(NSString*)key 
defaultValue:(NSInteger)defaultValue
 {
     NSInteger value = defaultValue;
@@ -549,55 +504,18 @@ static NSString* MIME_JPEG    = @"image/jpeg";
     return value;
 }
 
-- (void)displayPopover:(NSDictionary*)options
-{
-    NSInteger x = 0;
-    NSInteger y = 32;
-    NSInteger width = 320;
-    NSInteger height = 480;
-    UIPopoverArrowDirection arrowDirection = UIPopoverArrowDirectionAny;
-
-    if (options) {
-        x = [self integerValueForKey:options key:@"x" defaultValue:0];
-        y = [self integerValueForKey:options key:@"y" defaultValue:32];
-        width = [self integerValueForKey:options key:@"width" 
defaultValue:320];
-        height = [self integerValueForKey:options key:@"height" 
defaultValue:480];
-        arrowDirection = [self integerValueForKey:options key:@"arrowDir" 
defaultValue:UIPopoverArrowDirectionAny];
-        if (![org_apache_cordova_validArrowDirections containsObject:[NSNumber 
numberWithUnsignedInteger:arrowDirection]]) {
-            arrowDirection = UIPopoverArrowDirectionAny;
-        }
-    }
-
-    [[[self pickerController] pickerPopoverController] setDelegate:self];
-    [[[self pickerController] pickerPopoverController] 
presentPopoverFromRect:CGRectMake(x, y, width, height)
-                                                                 
inView:[self.webView superview]
-                                               
permittedArrowDirections:arrowDirection
-                                                               animated:YES];
-}
-
 // UINavigationControllerDelegate method
 - (void)navigationController:(UINavigationController*)navigationController
       willShowViewController:(UIViewController*)viewController
                     animated:(BOOL)animated
 {
+    // Backward compatibility for iOS < 14
+    // Set title "Videos", when picking videos with the legacy 
UIImagePickerController
     if([navigationController isKindOfClass:[UIImagePickerController class]]) {
-        // If popoverWidth and popoverHeight are specified and are greater 
than 0,
-        // then set popover size, else use apple's default popoverSize
-        NSDictionary* options = 
self.pickerController.pictureOptions.popoverOptions;
-        
-        if(options) {
-            NSInteger popoverWidth = [self integerValueForKey:options 
key:@"popoverWidth" defaultValue:0];
-            NSInteger popoverHeight = [self integerValueForKey:options 
key:@"popoverHeight" defaultValue:0];
-            
-            if(popoverWidth > 0 && popoverHeight > 0) {
-                [viewController 
setPreferredContentSize:CGSizeMake(popoverWidth,popoverHeight)];
-            }
-        }
-        
-        UIImagePickerController* imagePicker = 
(UIImagePickerController*)navigationController;
+        UIImagePickerController* imagePickerController = 
(UIImagePickerController*)navigationController;
 
-        // Set "Videos" title if mediaType is not for images
-        if(![imagePicker.mediaTypes containsObject:(NSString*)kUTTypeImage]) {
+        // Set title "Videos" when picking not images
+        if(![imagePickerController.mediaTypes 
containsObject:(NSString*)kUTTypeImage]) {
             [viewController.navigationItem 
setTitle:NSLocalizedString(@"Videos", nil)];
         }
     }
@@ -638,21 +556,6 @@ static NSString* MIME_JPEG    = @"image/jpeg";
     [self.commandDelegate sendPluginResult:pluginResult 
callbackId:command.callbackId];
 }
 
-- (void)popoverControllerDidDismissPopover:(id)popoverController
-{
-    UIPopoverController* pc = (UIPopoverController*)popoverController;
-
-    [pc dismissPopoverAnimated:YES];
-    pc.delegate = nil;
-    if (self.pickerController && self.pickerController.callbackId && 
self.pickerController.pickerPopoverController) {
-        self.pickerController.pickerPopoverController = nil;
-        NSString* callbackId = self.pickerController.callbackId;
-        CDVPluginResult* result = [CDVPluginResult 
resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"no image selected"];  
 // error callback expects string ATM
-        [self.commandDelegate sendPluginResult:result callbackId:callbackId];
-    }
-    self.hasPendingOperation = NO;
-}
-
 - (NSString*)getMimeForEncoding:(CDVEncodingType)encoding
 {
     switch (encoding) {
@@ -1007,14 +910,7 @@ static NSString* MIME_JPEG    = @"image/jpeg";
         }
     };
 
-    if (cameraPicker.pictureOptions.popoverSupported && 
(cameraPicker.pickerPopoverController != nil)) {
-        [cameraPicker.pickerPopoverController dismissPopoverAnimated:YES];
-        cameraPicker.pickerPopoverController.delegate = nil;
-        cameraPicker.pickerPopoverController = nil;
-        invoke();
-    } else {
-        [[cameraPicker presentingViewController] 
dismissViewControllerAnimated:YES completion:invoke];
-    }
+    [[cameraPicker presentingViewController] dismissViewControllerAnimated:YES 
completion:invoke];
 }
 
 // older api calls newer didFinishPickingMediaWithInfo
diff --git a/tests/ios/CDVCameraTest/CDVCameraLibTests/CameraTest.m 
b/tests/ios/CDVCameraTest/CDVCameraLibTests/CameraTest.m
index 13a71ad..68e0421 100644
--- a/tests/ios/CDVCameraTest/CDVCameraLibTests/CameraTest.m
+++ b/tests/ios/CDVCameraTest/CDVCameraLibTests/CameraTest.m
@@ -61,7 +61,6 @@
 {
     NSArray* args;
     CDVPictureOptions* options;
-    NSDictionary* popoverOptions;
     
     // No arguments, check whether the defaults are set
     args = @[];
@@ -79,14 +78,10 @@
     XCTAssertEqual(options.allowsEditing, NO);
     XCTAssertEqual(options.correctOrientation, NO);
     XCTAssertEqual(options.saveToPhotoAlbum, NO);
-    XCTAssertEqualObjects(options.popoverOptions, nil);
     XCTAssertEqual(options.cameraDirection, 
(int)UIImagePickerControllerCameraDeviceRear);
-    XCTAssertEqual(options.popoverSupported, NO);
     XCTAssertEqual(options.usesGeolocation, NO);
     
     // Set each argument, check whether they are set. different from defaults
-    popoverOptions = @{ @"x" : @1, @"y" : @2, @"width" : @3, @"height" : @4, 
@"popoverWidth": @200, @"popoverHeight": @300 };
-    
     args = @[
              @(49),
              @(DestinationTypeDataUrl),
@@ -98,7 +93,6 @@
              @YES,
              @YES,
              @YES,
-             popoverOptions,
              @(UIImagePickerControllerCameraDeviceFront),
              ];
     
@@ -115,22 +109,17 @@
     XCTAssertEqual(options.allowsEditing, YES);
     XCTAssertEqual(options.correctOrientation, YES);
     XCTAssertEqual(options.saveToPhotoAlbum, YES);
-    XCTAssertEqualObjects(options.popoverOptions, popoverOptions);
     XCTAssertEqual(options.cameraDirection, 
(int)UIImagePickerControllerCameraDeviceFront);
-    XCTAssertEqual(options.popoverSupported, NO);
     XCTAssertEqual(options.usesGeolocation, NO);
 }
 
 - (void)testCameraPickerCreate
 {
-    NSDictionary* popoverOptions;
     NSArray* args;
     CDVPictureOptions* pictureOptions;
     CDVCameraPicker* picker;
     
-    // Source is Camera, and image type - Camera always uses 
UIImagePickerController
-    
-    popoverOptions = @{ @"x" : @1, @"y" : @2, @"width" : @3, @"height" : @4, 
@"popoverWidth": @200, @"popoverHeight": @300 };
+    // Source is Camera, uses always UIImagePickerController
     args = @[
              @(49),
              @(DestinationTypeDataUrl),
@@ -142,7 +131,6 @@
              @YES,
              @YES,
              @YES,
-             popoverOptions,
              @(UIImagePickerControllerCameraDeviceFront),
              ];
     
@@ -173,7 +161,6 @@
           @YES,
           @YES,
           @YES,
-          popoverOptions,
           @(UIImagePickerControllerCameraDeviceFront),
           ];
     
@@ -203,7 +190,6 @@
              @YES,
              @YES,
              @YES,
-             popoverOptions,
              @(UIImagePickerControllerCameraDeviceFront),
              ];
     
diff --git a/tests/tests.js b/tests/tests.js
index 721d412..ae65111 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -19,7 +19,7 @@
  *
 */
 
-/* globals Camera, resolveLocalFileSystemURL, FileEntry, CameraPopoverOptions, 
LocalFileSystem */
+/* globals Camera, resolveLocalFileSystemURL, FileEntry, LocalFileSystem */
 /* eslint-env jasmine */
 
 exports.defineAutoTests = function () {
@@ -156,13 +156,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         clearStatus();
         const options = extractOptions();
         log('Getting picture with options: ' + JSON.stringify(options));
-        const popoverHandle = navigator.camera.getPicture(getPictureWin, 
onGetPictureError, options);
-
-        // Reposition the popover if the orientation changes.
-        window.onorientationchange = function () {
-            const newPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, 
0, 300, 400);
-            popoverHandle.setPosition(newPopoverOptions);
-        };
+        navigator.camera.getPicture(getPictureWin, onGetPictureError, options);
     }
 
     function logCallback (apiName, success) {
diff --git a/types/index.d.ts b/types/index.d.ts
index cbf62e2..4fe7788 100644
--- a/types/index.d.ts
+++ b/types/index.d.ts
@@ -36,11 +36,6 @@ interface Camera {
         cameraSuccess: (data: string) => void,
         cameraError: (message: string) => void,
         cameraOptions?: CameraOptions): void;
-    // Next will work only on iOS
-    //getPicture(
-    //    cameraSuccess: (data: string) => void,
-    //    cameraError: (message: string) => void,
-    //    cameraOptions?: CameraOptions): CameraPopoverHandle;
 }
 
 interface CameraOptions {
@@ -100,46 +95,6 @@ interface CameraOptions {
      *      BACK: 1
      */
     cameraDirection?: number;
-    /** iOS-only options that specify popover location in iPad. Defined in 
CameraPopoverOptions. */
-    popoverOptions?: CameraPopoverOptions;
-}
-
-/**
- * A handle to the popover dialog created by navigator.camera.getPicture. Used 
on iOS only.
- */
-interface CameraPopoverHandle {
-    /**
-     * Set the position of the popover.
-     * @param popoverOptions the CameraPopoverOptions that specify the new 
position.
-     */
-    setPosition(popoverOptions: CameraPopoverOptions): void;
-}
-
-/**
- * iOS-only parameters that specify the anchor element location and arrow 
direction
- * of the popover when selecting images from an iPad's library or album.
- */
-interface CameraPopoverOptions {
-    x: number;
-    y: number;
-    width: number;
-    height: number;
-    /**
-     * Direction the arrow on the popover should point. Defined in 
Camera.PopoverArrowDirection
-     * Matches iOS UIPopoverArrowDirection constants.
-     *      ARROW_UP : 1,        
-     *      ARROW_DOWN : 2,
-     *      ARROW_LEFT : 4,
-     *      ARROW_RIGHT : 8,
-     *      ARROW_ANY : 15
-     */
-    arrowDir : number;
-    popoverWidth: number;
-    popoverHeight: number;
-}
-
-declare class CameraPopoverOptions implements CameraPopoverOptions {
-    constructor(x?: number, y?: number, width?: number, height?: number, 
arrowDir?: number);
 }
 
 declare var Camera: {
@@ -166,12 +121,4 @@ declare var Camera: {
         CAMERA: number;
         SAVEDPHOTOALBUM: number;
     }
-    // Used only on iOS
-    PopoverArrowDirection: {
-        ARROW_UP: number;
-        ARROW_DOWN: number;
-        ARROW_LEFT: number;
-        ARROW_RIGHT: number;
-        ARROW_ANY: number;
-    }
 };
diff --git a/www/Camera.js b/www/Camera.js
index 1e6b5ca..230a221 100644
--- a/www/Camera.js
+++ b/www/Camera.js
@@ -22,8 +22,6 @@
 const argscheck = require('cordova/argscheck');
 const exec = require('cordova/exec');
 const Camera = require('./Camera');
-// XXX: commented out
-// CameraPopoverHandle = require('./CameraPopoverHandle');
 
 /**
  * @namespace navigator
@@ -73,7 +71,6 @@ for (const key in Camera) {
  * @property {module:Camera.MediaType} [mediaType=PICTURE] - Set the type of 
media to select from.  Only works when `PictureSourceType` is `PHOTOLIBRARY` or 
`SAVEDPHOTOALBUM`.
  * @property {Boolean} [correctOrientation] - Rotate the image to correct for 
the orientation of the device during capture.
  * @property {Boolean} [saveToPhotoAlbum] - Save the image to the photo album 
on the device after capture.
- * @property {module:CameraPopoverOptions} [popoverOptions] - iOS-only options 
that specify popover location in iPad.
  * @property {module:Camera.Direction} [cameraDirection=BACK] - Choose the 
camera to use (front- or back-facing).
  */
 
@@ -140,7 +137,6 @@ cameraExport.getPicture = function (successCallback, 
errorCallback, options) {
     const allowEdit = !!options.allowEdit;
     const correctOrientation = !!options.correctOrientation;
     const saveToPhotoAlbum = !!options.saveToPhotoAlbum;
-    const popoverOptions = getValue(options.popoverOptions, null);
     const cameraDirection = getValue(options.cameraDirection, 
Camera.Direction.BACK);
 
     if (allowEdit) {
@@ -148,11 +144,9 @@ cameraExport.getPicture = function (successCallback, 
errorCallback, options) {
     }
 
     const args = [quality, destinationType, sourceType, targetWidth, 
targetHeight, encodingType,
-        mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, 
popoverOptions, cameraDirection];
+        mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, 
cameraDirection];
 
     exec(successCallback, errorCallback, 'Camera', 'takePicture', args);
-    // XXX: commented out
-    // return new CameraPopoverHandle();
 };
 
 /**
diff --git a/www/CameraConstants.js b/www/CameraConstants.js
index bd1adfc..c6cb07d 100644
--- a/www/CameraConstants.js
+++ b/www/CameraConstants.js
@@ -75,17 +75,6 @@ module.exports = {
          **/
         SAVEDPHOTOALBUM: 2
     },
-    /**
-     * Matches iOS UIPopoverArrowDirection constants to specify arrow location 
on popover.
-     * @enum {number}
-     */
-    PopoverArrowDirection: {
-        ARROW_UP: 1,
-        ARROW_DOWN: 2,
-        ARROW_LEFT: 4,
-        ARROW_RIGHT: 8,
-        ARROW_ANY: 15
-    },
     /**
      * @enum {number}
      */
diff --git a/www/CameraPopoverHandle.js b/www/CameraPopoverHandle.js
deleted file mode 100644
index f7252d4..0000000
--- a/www/CameraPopoverHandle.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * @ignore in favour of iOS' one
- * A handle to an image picker popover.
- */
-const CameraPopoverHandle = function () {
-    this.setPosition = function (popoverOptions) {
-        console.log('CameraPopoverHandle.setPosition is only supported on 
iOS.');
-    };
-};
-
-module.exports = CameraPopoverHandle;
diff --git a/www/CameraPopoverOptions.js b/www/CameraPopoverOptions.js
deleted file mode 100644
index 68e8ae1..0000000
--- a/www/CameraPopoverOptions.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-const Camera = require('./Camera');
-
-/**
- * @namespace navigator
- */
-
-/**
- * iOS-only parameters that specify the anchor element location and arrow
- * direction of the popover when selecting images from an iPad's library
- * or album.
- * Note that the size of the popover may change to adjust to the
- * direction of the arrow and orientation of the screen.  Make sure to
- * account for orientation changes when specifying the anchor element
- * location.
- * @module CameraPopoverOptions
- * @param {Number} [x=0] - x pixel coordinate of screen element onto which to 
anchor the popover.
- * @param {Number} [y=32] - y pixel coordinate of screen element onto which to 
anchor the popover.
- * @param {Number} [width=320] - width, in pixels, of the screen element onto 
which to anchor the popover.
- * @param {Number} [height=480] - height, in pixels, of the screen element 
onto which to anchor the popover.
- * @param {module:Camera.PopoverArrowDirection} [arrowDir=ARROW_ANY] - 
Direction the arrow on the popover should point.
- * @param {Number} [popoverWidth=0] - width of the popover (0 or not specified 
will use apple's default width).
- * @param {Number} [popoverHeight=0] - height of the popover (0 or not 
specified will use apple's default height).
- */
-const CameraPopoverOptions = function (x, y, width, height, arrowDir, 
popoverWidth, popoverHeight) {
-    // information of rectangle that popover should be anchored to
-    this.x = x || 0;
-    this.y = y || 32;
-    this.width = width || 320;
-    this.height = height || 480;
-    this.arrowDir = arrowDir || Camera.PopoverArrowDirection.ARROW_ANY;
-    this.popoverWidth = popoverWidth || 0;
-    this.popoverHeight = popoverHeight || 0;
-};
-
-module.exports = CameraPopoverOptions;
diff --git a/www/ios/CameraPopoverHandle.js b/www/ios/CameraPopoverHandle.js
deleted file mode 100644
index b3ac04f..0000000
--- a/www/ios/CameraPopoverHandle.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-const exec = require('cordova/exec');
-
-/**
- * @namespace navigator
- */
-
-/**
- * A handle to an image picker popover.
- *
- * __Supported Platforms__
- *
- * - iOS
- *
- * @example
- * navigator.camera.getPicture(onSuccess, onFail,
- * {
- *     destinationType: Camera.DestinationType.FILE_URI,
- *     sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
- *     popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, 
Camera.PopoverArrowDirection.ARROW_ANY, 300, 600)
- * });
- *
- * // Reposition the popover if the orientation changes.
- * window.onorientationchange = function() {
- *     var cameraPopoverHandle = new CameraPopoverHandle();
- *     var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, 
Camera.PopoverArrowDirection.ARROW_ANY, 400, 500);
- *     cameraPopoverHandle.setPosition(cameraPopoverOptions);
- * }
- * @module CameraPopoverHandle
- */
-const CameraPopoverHandle = function () {
-    /**
-     * Can be used to reposition the image selection dialog,
-     * for example, when the device orientation changes.
-     * @memberof CameraPopoverHandle
-     * @instance
-     * @method setPosition
-     * @param {module:CameraPopoverOptions} popoverOptions
-     */
-    this.setPosition = function (popoverOptions) {
-        const args = [popoverOptions];
-        exec(null, null, 'Camera', 'repositionPopover', args);
-    };
-};
-
-module.exports = CameraPopoverHandle;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to