| /* |
| 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 |
| |