![pwlin](/assets/img/avatar_default.png)
- Added src/osx plugin folder structure. - Added OSX platform to plugin.xml and package.json files. - Added _system target functionality for OSX. - Modified README.md to include information about OSX support. - Disabled 'open method' jasmine tests for OSX. This closes #190
90 lines
2.9 KiB
Objective-C
90 lines
2.9 KiB
Objective-C
/*
|
|
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.
|
|
*/
|
|
|
|
#import "CDVInAppBrowser.h"
|
|
#import <Cordova/CDVPluginResult.h>
|
|
|
|
#define kInAppBrowserTargetSelf @"_self"
|
|
#define kInAppBrowserTargetSystem @"_system"
|
|
#define kInAppBrowserTargetBlank @"_blank"
|
|
|
|
@interface CDVInAppBrowser () {
|
|
}
|
|
@end
|
|
|
|
@implementation CDVInAppBrowser
|
|
|
|
- (void)pluginInitialize
|
|
{
|
|
}
|
|
|
|
- (BOOL) isSystemUrl:(NSURL*)url
|
|
{
|
|
if ([[url host] isEqualToString:@"itunes.apple.com"]) {
|
|
return YES;
|
|
}
|
|
|
|
return NO;
|
|
}
|
|
|
|
- (void)open:(CDVInvokedUrlCommand*)command
|
|
{
|
|
CDVPluginResult* pluginResult;
|
|
|
|
NSString* url = [command argumentAtIndex:0];
|
|
NSString* target = [command argumentAtIndex:1 withDefault:kInAppBrowserTargetSelf];
|
|
|
|
self.callbackId = command.callbackId;
|
|
|
|
if (url != nil) {
|
|
|
|
NSURL* baseUrl = [NSURL URLWithString:url];
|
|
|
|
NSURL* absoluteUrl = [[NSURL URLWithString:url relativeToURL:baseUrl] absoluteURL];
|
|
|
|
if ([self isSystemUrl:absoluteUrl]) {
|
|
target = kInAppBrowserTargetSystem;
|
|
}
|
|
|
|
if ([target isEqualToString:kInAppBrowserTargetSelf]) {
|
|
//[self openInCordovaWebView:absoluteUrl withOptions:options];
|
|
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Not Yet Implemented for OSX: [self openInCordovaWebView:absoluteUrl withOptions:options]"];
|
|
} else if ([target isEqualToString:kInAppBrowserTargetSystem]) {
|
|
[self openInSystem:absoluteUrl];
|
|
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
|
|
} else { // _blank or anything else
|
|
//[self openInInAppBrowser:absoluteUrl withOptions:options];
|
|
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Not Yet Implemented for OSX: [self openInInAppBrowser:absoluteUrl withOptions:options]"];
|
|
}
|
|
|
|
} else {
|
|
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"incorrect number of arguments"];
|
|
}
|
|
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
|
|
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
|
|
}
|
|
|
|
- (void)openInSystem:(NSURL*)url
|
|
{
|
|
[[NSWorkspace sharedWorkspace] openURL:url];
|
|
}
|
|
|
|
@end
|
|
|