Apply getter check to determine if API is exposed as property or as method for iOS backward compatibility

This commit is contained in:
Panayot Cankov
2016-09-12 12:54:38 +03:00
parent e9c7c5a749
commit b81c034f67
29 changed files with 174 additions and 113 deletions

View File

@@ -15,6 +15,9 @@ import timer = require("timer");
import trace = require("trace");
import types = require("utils/types");
import platform = require("platform");
import * as utils from "utils/utils";
var sdkVersion = parseInt(platform.device.sdkVersion);
trace.enable();
@@ -377,7 +380,8 @@ export var waitUntilReady = function (isReady: () => boolean, timeoutSec?: numbe
var waitTime = 20 / 1000;
var totalWaitTime = 0;
while (true) {
NSRunLoop.currentRunLoop().runUntilDate(<any>NSDate.dateWithTimeIntervalSinceNow(waitTime));
utils.ios.getter(NSRunLoop, NSRunLoop.currentRunLoop).runUntilDate(<any>NSDate.dateWithTimeIntervalSinceNow(waitTime));
if (isReady()) {
break;
}

View File

@@ -3,6 +3,9 @@ import app = require("application");
import TKUnit = require("./TKUnit");
import commonTests = require("./application-tests-common");
import * as utils from "utils/utils";
import getter = utils.ios.getter;
global.moduleMerge(commonTests, exports);
// >> application-ios-observer
@@ -10,7 +13,7 @@ global.moduleMerge(commonTests, exports);
if (app.ios) {
var observer = app.ios.addNotificationObserver(UIDeviceBatteryLevelDidChangeNotification,
function onReceiveCallback(notification: NSNotification) {
var percent = UIDevice.currentDevice().batteryLevel * 100;
var percent = getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100;
var message = "Battery: " + percent + "%";
////console.log(message);
});

View File

@@ -4,6 +4,8 @@ import buttons = require("ui/button");
import app = require("application");
import platform = require("platform");
import * as utils from "utils/utils";
function printDeviceInfoAndroid() {
console.log("android.os.Build.DEVICE = " + android.os.Build.DEVICE); //android.os.Build.DEVICE = hammerhead
console.log("android.os.Build.VERSION.SDK = " + android.os.Build.VERSION.SDK); //android.os.Build.VERSION.SDK = 19
@@ -27,7 +29,7 @@ function printDeviceInfoAndroid() {
}
function printDeviceInfoIOS() {
var device = UIDevice.currentDevice();
var device = utils.ios.getter(UIDevice, UIDevice.currentDevice);
console.log("device.name = " + device.name); //device.name = iPhone Simulator
console.log("device.systemName = " + device.systemName); //device.systemName = iPhone OS
console.log("device.systemVersion = " + device.systemVersion); //device.systemVersion = 8.1
@@ -35,7 +37,7 @@ function printDeviceInfoIOS() {
console.log("device.localizedModel = " + device.localizedModel); //device.localizedModel = iPhone Simulator
console.log("device.userInterfaceIdiom = " + device.userInterfaceIdiom); //device.userInterfaceIdiom = 0
console.log("device.batteryLevel = " + device.batteryLevel); //device.batteryLevel = -1
var screen = UIScreen.mainScreen();
var screen = utils.ios.getter(UIScreen, UIScreen.mainScreen);
console.log("screen = " + screen);
console.log("screen.nativeBounds = " + screen.nativeBounds.size.width + ", " + screen.nativeBounds.size.height); //screen.nativeBounds = 640, 1136
console.log("screen.scale = " + screen.scale); //screen.scale = 2

View File

@@ -112,7 +112,9 @@ var testsWithLongDelay = {
testLoadExistingUrl: 10000 * 5,
testLoadLocalFile: 10000 * 5,
testLoadInvalidUrl: 10000,
testLoadUpperCaseSrc: 10000 * 5
testLoadUpperCaseSrc: 10000 * 5,
test_SettingImageSrc: 30 * 1000,
test_ChainingAnimations: 30 * 1000
}
var startTime;

View File

@@ -1,15 +1,17 @@
import datePickerModule = require("ui/date-picker");
import * as utils from "utils/utils";
export function getNativeYear(datePicker: datePickerModule.DatePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).year;
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).year;
}
export function getNativeMonth(datePicker: datePickerModule.DatePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).month;
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).month;
}
export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).day;
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date).day;
}
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
@@ -21,31 +23,31 @@ export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date
}
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
comps.year = value;
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
}
export function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
comps.month = value;
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
}
export function setNativeDay(datePicker: datePickerModule.DatePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
comps.day = value;
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
}
export function setNativeDate(datePicker: datePickerModule.DatePicker, year: number, month: number, day: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay, datePicker.ios.date);
comps.year = year;
comps.month = month;
comps.day = day;
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
datePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
}
}

View File

@@ -1,32 +1,34 @@
import timePickerModule = require("ui/time-picker");
import * as utils from "utils/utils";
export function getNativeHour(timePicker: timePickerModule.TimePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).hour;
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).hour;
}
export function getNativeMinute(timePicker: timePickerModule.TimePicker): number {
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).minute;
return utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date).minute;
}
export function setNativeHour(timePicker: timePickerModule.TimePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
comps.hour = value;
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
}
export function setNativeMinute(timePicker: timePickerModule.TimePicker, value: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
comps.minute = value;
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
}
export function setNativeTime(timePicker: timePickerModule.TimePicker, hour: number, minute: number): void {
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
var comps = utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).componentsFromDate(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute, timePicker.ios.date);
comps.hour = hour;
comps.minute = minute;
timePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
timePicker.ios.setDateAnimated(utils.ios.getter(NSCalendar, NSCalendar.currentCalendar).dateFromComponents(comps), false);
(<any>timePicker)._changeHandler.valueChanged(timePicker.ios);
}

View File

@@ -24,7 +24,7 @@ export function checkNativeBackgroundColor(v: view.View): boolean {
if (v.ios instanceof UILabel) {
var cgColor1 = (<UILabel>v.ios).layer.backgroundColor;
var cgColor2 = (<UIColor>v.backgroundColor.ios).CGColor;
return v.backgroundColor && CGColorEqualToColor(cgColor1, cgColor2);
return v.backgroundColor && !!CGColorEqualToColor(cgColor1, cgColor2);
}
return v.backgroundColor && (<UIView>v.ios).backgroundColor.isEqual(v.backgroundColor.ios);