You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by Andrew Grieve <ag...@chromium.org> on 2013/06/28 17:17:46 UTC

Re: ios commit: added cdvshared

Hey Steve,

Just noticed your CDVShared.h commit. For iOS, we have to be really careful
about namespacing since Obj-C has no namespaces. The category name should
being with "CDV". So, instead of JSONMethods, it should be
"CDVJSONMethods", or maybe: "CDVExtensions".

Since categories are a bit of a murky area, it's also important that each
category on a class go in a file names after the class it's modifying.
These methods should go in:

NSError+CDVExtensions.h
CLLocation+CDVExtensions.h

Just did a grep, and don't actually see these new methods used anywhere...
There is a copy of them in CDVLocation.m, but that's it. Maybe we can just
delete them?


On Tue, Jun 25, 2013 at 8:01 PM, <st...@apache.org> wrote:

> Updated Branches:
>   refs/heads/3.0.0 9ca742180 -> f705b31e2
>
>
> added cdvshared
>
>
> Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
> Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/f705b31e
> Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/f705b31e
> Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/f705b31e
>
> Branch: refs/heads/3.0.0
> Commit: f705b31e27693bf44f7f2231cb438fa7809e7fba
> Parents: 9ca7421
> Author: Steven Gill <st...@gmail.com>
> Authored: Tue Jun 25 17:01:09 2013 -0700
> Committer: Steven Gill <st...@gmail.com>
> Committed: Tue Jun 25 17:01:09 2013 -0700
>
> ----------------------------------------------------------------------
>  CordovaLib/Classes/CDVShared.h                  | 35 ++++++++++++
>  CordovaLib/Classes/CDVShared.m                  | 59 ++++++++++++++++++++
>  CordovaLib/CordovaLib.xcodeproj/project.pbxproj | 10 +++-
>  3 files changed, 103 insertions(+), 1 deletion(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.h
> ----------------------------------------------------------------------
> diff --git a/CordovaLib/Classes/CDVShared.h
> b/CordovaLib/Classes/CDVShared.h
> new file mode 100644
> index 0000000..0b59a37
> --- /dev/null
> +++ b/CordovaLib/Classes/CDVShared.h
> @@ -0,0 +1,35 @@
> +/*
> + 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 <Foundation/Foundation.h>
> +#import <CoreLocation/CoreLocation.h>
> +
> +
> +@interface NSError (JSONMethods)
> +
> +- (NSString*)JSONRepresentation;
> +
> +@end
> +
> +@interface CLLocation (JSONMethods)
> +
> +- (NSString*)JSONRepresentation;
> +
> +@end
> +
>
>
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.m
> ----------------------------------------------------------------------
> diff --git a/CordovaLib/Classes/CDVShared.m
> b/CordovaLib/Classes/CDVShared.m
> new file mode 100644
> index 0000000..8756c17
> --- /dev/null
> +++ b/CordovaLib/Classes/CDVShared.m
> @@ -0,0 +1,59 @@
> +/*
> + 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 "CDVShared.h"
> +
> +#pragma mark -
> +#pragma mark CLLocation(JSONMethods)
> +
> +@implementation CLLocation (JSONMethods)
> +
> +- (NSString*)JSONRepresentation
> +{
> +    return [NSString stringWithFormat:
> +            @"{ timestamp: %.00f, \
> +            coords: { latitude: %f, longitude: %f, altitude: %.02f,
> heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: %.02f } \
> +            }",
> +            [self.timestamp timeIntervalSince1970] * 1000.0,
> +            self.coordinate.latitude,
> +            self.coordinate.longitude,
> +            self.altitude,
> +            self.course,
> +            self.speed,
> +            self.horizontalAccuracy,
> +            self.verticalAccuracy
> +            ];
> +}
> +
> +@end
> +
> +#pragma mark NSError(JSONMethods)
> +
> +@implementation NSError (JSONMethods)
> +
> +- (NSString*)JSONRepresentation
> +{
> +    return [NSString stringWithFormat:
> +            @"{ code: %d, message: '%@'}",
> +            self.code,
> +            [self localizedDescription]
> +            ];
> +}
> +
> +@end
> \ No newline at end of file
>
>
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> ----------------------------------------------------------------------
> diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> index bf92ac3..2d97260 100644
> --- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> +++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> @@ -7,6 +7,8 @@
>         objects = {
>
>  /* Begin PBXBuildFile section */
> +               1B701028177A61CF00AE11F4 /* CDVShared.h in Headers */ =
> {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /* CDVShared.h */;
> };
> +               1B701029177A61CF00AE11F4 /* CDVShared.m in Sources */ =
> {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /* CDVShared.m */;
> };
>                 1F92F4A01314023E0046367C /* CDVPluginResult.h in Headers
> */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /*
> CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
>                 1F92F4A11314023E0046367C /* CDVPluginResult.m in Sources
> */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /*
> CDVPluginResult.m */; };
>                 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ = {isa =
> PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */; settings =
> {ATTRIBUTES = (Public, ); }; };
> @@ -57,6 +59,8 @@
>  /* End PBXBuildFile section */
>
>  /* Begin PBXFileReference section */
> +               1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa =
> PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> name = CDVShared.h; path = Classes/CDVShared.h; sourceTree = "<group>"; };
> +               1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa =
> PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc;
> name = CDVShared.m; path = Classes/CDVShared.m; sourceTree = "<group>"; };
>                 1F92F49E1314023E0046367C /* CDVPluginResult.h */ = {isa =
> PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> name = CDVPluginResult.h; path = Classes/CDVPluginResult.h; sourceTree =
> "<group>"; };
>                 1F92F49F1314023E0046367C /* CDVPluginResult.m */ = {isa =
> PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc;
> name = CDVPluginResult.m; path = Classes/CDVPluginResult.m; sourceTree =
> "<group>"; };
>                 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa =
> PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> name = CDV.h; path = Classes/CDV.h; sourceTree = "<group>"; };
> @@ -207,12 +211,14 @@
>                                 30C684921407044A004C1A8E /*
> CDVURLProtocol.h */,
>                                 30C684931407044A004C1A8E /*
> CDVURLProtocol.m */,
>                                 30C6847E1406CB38004C1A8E /* CDVWhitelist.h
> */,
> +                               1B701026177A61CF00AE11F4 /* CDVShared.h */,
> +                               1B701027177A61CF00AE11F4 /* CDVShared.m */,
>                                 30C6847F1406CB38004C1A8E /* CDVWhitelist.m
> */,
>                                 30E33AF013A7E24B00594D64 /* CDVPlugin.h */,
>                                 30E33AF113A7E24B00594D64 /* CDVPlugin.m */,
>                                 1F92F49E1314023E0046367C /*
> CDVPluginResult.h */,
>                                 1F92F49F1314023E0046367C /*
> CDVPluginResult.m */,
> -                EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
> +                               EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
>                                 EB80C2AB15DEA63D004D9E7B /* CDVEcho.m */,
>                                 8887FD341090FBE7009987E8 /*
> CDVInvokedUrlCommand.h */,
>                                 8887FD351090FBE7009987E8 /*
> CDVInvokedUrlCommand.m */,
> @@ -290,6 +296,7 @@
>                                 EBFF4DBD16D3FE2E008F452B /*
> CDVWebViewDelegate.h in Headers */,
>                                 EB96673B16A8970A00D86CDF /*
> CDVUserAgentUtil.h in Headers */,
>                                 7E14B5A81705050A0032169E /* CDVTimer.h in
> Headers */,
> +                               1B701028177A61CF00AE11F4 /* CDVShared.h in
> Headers */,
>                         );
>                         runOnlyForDeploymentPostprocessing = 0;
>                 };
> @@ -368,6 +375,7 @@
>                                 EB96673C16A8970A00D86CDF /*
> CDVUserAgentUtil.m in Sources */,
>                                 EBFF4DBC16D3FE2E008F452B /*
> CDVWebViewDelegate.m in Sources */,
>                                 7E14B5A91705050A0032169E /* CDVTimer.m in
> Sources */,
> +                               1B701029177A61CF00AE11F4 /* CDVShared.m in
> Sources */,
>                         );
>                         runOnlyForDeploymentPostprocessing = 0;
>                 };
>
>

Re: ios commit: added cdvshared

Posted by Filip Maj <fi...@adobe.com>.
Copy/paste fine for this particular instance but if we start seeing every
other iOS plugin do a similar thing, I think that translates into
something that should be considered as the "core" iOS implementation
providing, no?

On 6/28/13 1:42 PM, "Andrew Grieve" <ag...@chromium.org> wrote:

>Yeah, I think the need for shared code between plugins is going to come up
>a lot. I think it's important to keep Cordova core as leen as possible
>though, since that's the API that we promise to provide longer term.
>Probably it's fine in this case to just copy & paste the functions into
>each plugin. wdyt? Another option is to create a third plugin for the
>shared code, but that seems like overkill for such a small amount of code
>to me.
>
>
>On Fri, Jun 28, 2013 at 12:04 PM, Steven Gill
><st...@gmail.com>wrote:
>
>> Hey Andrew,
>>
>> I have no issue with renaming CDVShared.
>>
>> CDVLocation got split into two plugins, CDVLocation and CDVCompass.
>>Those
>> methods were shared between the two, so I split them up and put them in
>> CDVShared. Without doing this, you couldn't install both plugins in one
>> project.
>>
>> https://issues.apache.org/jira/browse/CB-3511
>>
>>
>>
>> On Fri, Jun 28, 2013 at 8:17 AM, Andrew Grieve <ag...@chromium.org>
>> wrote:
>>
>> > Hey Steve,
>> >
>> > Just noticed your CDVShared.h commit. For iOS, we have to be really
>> careful
>> > about namespacing since Obj-C has no namespaces. The category name
>>should
>> > being with "CDV". So, instead of JSONMethods, it should be
>> > "CDVJSONMethods", or maybe: "CDVExtensions".
>> >
>> > Since categories are a bit of a murky area, it's also important that
>>each
>> > category on a class go in a file names after the class it's modifying.
>> > These methods should go in:
>> >
>> > NSError+CDVExtensions.h
>> > CLLocation+CDVExtensions.h
>> >
>> > Just did a grep, and don't actually see these new methods used
>> anywhere...
>> > There is a copy of them in CDVLocation.m, but that's it. Maybe we can
>> just
>> > delete them?
>> >
>> >
>> > On Tue, Jun 25, 2013 at 8:01 PM, <st...@apache.org> wrote:
>> >
>> > > Updated Branches:
>> > >   refs/heads/3.0.0 9ca742180 -> f705b31e2
>> > >
>> > >
>> > > added cdvshared
>> > >
>> > >
>> > > Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
>> > > Commit:
>> > http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/f705b31e
>> > > Tree: 
>>http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/f705b31e
>> > > Diff: 
>>http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/f705b31e
>> > >
>> > > Branch: refs/heads/3.0.0
>> > > Commit: f705b31e27693bf44f7f2231cb438fa7809e7fba
>> > > Parents: 9ca7421
>> > > Author: Steven Gill <st...@gmail.com>
>> > > Authored: Tue Jun 25 17:01:09 2013 -0700
>> > > Committer: Steven Gill <st...@gmail.com>
>> > > Committed: Tue Jun 25 17:01:09 2013 -0700
>> > >
>> > > 
>>----------------------------------------------------------------------
>> > >  CordovaLib/Classes/CDVShared.h                  | 35 ++++++++++++
>> > >  CordovaLib/Classes/CDVShared.m                  | 59
>> > ++++++++++++++++++++
>> > >  CordovaLib/CordovaLib.xcodeproj/project.pbxproj | 10 +++-
>> > >  3 files changed, 103 insertions(+), 1 deletion(-)
>> > > 
>>----------------------------------------------------------------------
>> > >
>> > >
>> > >
>> > >
>> >
>> 
>>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL
>>ib/Classes/CDVShared.h
>> > > 
>>----------------------------------------------------------------------
>> > > diff --git a/CordovaLib/Classes/CDVShared.h
>> > > b/CordovaLib/Classes/CDVShared.h
>> > > new file mode 100644
>> > > index 0000000..0b59a37
>> > > --- /dev/null
>> > > +++ b/CordovaLib/Classes/CDVShared.h
>> > > @@ -0,0 +1,35 @@
>> > > +/*
>> > > + 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 <Foundation/Foundation.h>
>> > > +#import <CoreLocation/CoreLocation.h>
>> > > +
>> > > +
>> > > +@interface NSError (JSONMethods)
>> > > +
>> > > +- (NSString*)JSONRepresentation;
>> > > +
>> > > +@end
>> > > +
>> > > +@interface CLLocation (JSONMethods)
>> > > +
>> > > +- (NSString*)JSONRepresentation;
>> > > +
>> > > +@end
>> > > +
>> > >
>> > >
>> > >
>> >
>> 
>>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL
>>ib/Classes/CDVShared.m
>> > > 
>>----------------------------------------------------------------------
>> > > diff --git a/CordovaLib/Classes/CDVShared.m
>> > > b/CordovaLib/Classes/CDVShared.m
>> > > new file mode 100644
>> > > index 0000000..8756c17
>> > > --- /dev/null
>> > > +++ b/CordovaLib/Classes/CDVShared.m
>> > > @@ -0,0 +1,59 @@
>> > > +/*
>> > > + 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 "CDVShared.h"
>> > > +
>> > > +#pragma mark -
>> > > +#pragma mark CLLocation(JSONMethods)
>> > > +
>> > > +@implementation CLLocation (JSONMethods)
>> > > +
>> > > +- (NSString*)JSONRepresentation
>> > > +{
>> > > +    return [NSString stringWithFormat:
>> > > +            @"{ timestamp: %.00f, \
>> > > +            coords: { latitude: %f, longitude: %f, altitude: %.02f,
>> > > heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy:
>>%.02f
>> }
>> > \
>> > > +            }",
>> > > +            [self.timestamp timeIntervalSince1970] * 1000.0,
>> > > +            self.coordinate.latitude,
>> > > +            self.coordinate.longitude,
>> > > +            self.altitude,
>> > > +            self.course,
>> > > +            self.speed,
>> > > +            self.horizontalAccuracy,
>> > > +            self.verticalAccuracy
>> > > +            ];
>> > > +}
>> > > +
>> > > +@end
>> > > +
>> > > +#pragma mark NSError(JSONMethods)
>> > > +
>> > > +@implementation NSError (JSONMethods)
>> > > +
>> > > +- (NSString*)JSONRepresentation
>> > > +{
>> > > +    return [NSString stringWithFormat:
>> > > +            @"{ code: %d, message: '%@'}",
>> > > +            self.code,
>> > > +            [self localizedDescription]
>> > > +            ];
>> > > +}
>> > > +
>> > > +@end
>> > > \ No newline at end of file
>> > >
>> > >
>> > >
>> >
>> 
>>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL
>>ib/CordovaLib.xcodeproj/project.pbxproj
>> > > 
>>----------------------------------------------------------------------
>> > > diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
>> > > b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
>> > > index bf92ac3..2d97260 100644
>> > > --- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
>> > > +++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
>> > > @@ -7,6 +7,8 @@
>> > >         objects = {
>> > >
>> > >  /* Begin PBXBuildFile section */
>> > > +               1B701028177A61CF00AE11F4 /* CDVShared.h in Headers
>>*/ =
>> > > {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /*
>>CDVShared.h
>> > */;
>> > > };
>> > > +               1B701029177A61CF00AE11F4 /* CDVShared.m in Sources
>>*/ =
>> > > {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /*
>>CDVShared.m
>> > */;
>> > > };
>> > >                 1F92F4A01314023E0046367C /* CDVPluginResult.h in
>> Headers
>> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /*
>> > > CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
>> > >                 1F92F4A11314023E0046367C /* CDVPluginResult.m in
>> Sources
>> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /*
>> > > CDVPluginResult.m */; };
>> > >                 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ =
>>{isa
>> =
>> > > PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */;
>>settings
>> =
>> > > {ATTRIBUTES = (Public, ); }; };
>> > > @@ -57,6 +59,8 @@
>> > >  /* End PBXBuildFile section */
>> > >
>> > >  /* Begin PBXFileReference section */
>> > > +               1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa =
>> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>sourcecode.c.h;
>> > > name = CDVShared.h; path = Classes/CDVShared.h; sourceTree =
>>"<group>";
>> > };
>> > > +               1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa =
>> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
>> > sourcecode.c.objc;
>> > > name = CDVShared.m; path = Classes/CDVShared.m; sourceTree =
>>"<group>";
>> > };
>> > >                 1F92F49E1314023E0046367C /* CDVPluginResult.h */ =
>> {isa =
>> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>sourcecode.c.h;
>> > > name = CDVPluginResult.h; path = Classes/CDVPluginResult.h;
>>sourceTree
>> =
>> > > "<group>"; };
>> > >                 1F92F49F1314023E0046367C /* CDVPluginResult.m */ =
>> {isa =
>> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
>> > sourcecode.c.objc;
>> > > name = CDVPluginResult.m; path = Classes/CDVPluginResult.m;
>>sourceTree
>> =
>> > > "<group>"; };
>> > >                 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa =
>> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>sourcecode.c.h;
>> > > name = CDV.h; path = Classes/CDV.h; sourceTree = "<group>"; };
>> > > @@ -207,12 +211,14 @@
>> > >                                 30C684921407044A004C1A8E /*
>> > > CDVURLProtocol.h */,
>> > >                                 30C684931407044A004C1A8E /*
>> > > CDVURLProtocol.m */,
>> > >                                 30C6847E1406CB38004C1A8E /*
>> > CDVWhitelist.h
>> > > */,
>> > > +                               1B701026177A61CF00AE11F4 /*
>>CDVShared.h
>> > */,
>> > > +                               1B701027177A61CF00AE11F4 /*
>>CDVShared.m
>> > */,
>> > >                                 30C6847F1406CB38004C1A8E /*
>> > CDVWhitelist.m
>> > > */,
>> > >                                 30E33AF013A7E24B00594D64 /*
>>CDVPlugin.h
>> > */,
>> > >                                 30E33AF113A7E24B00594D64 /*
>>CDVPlugin.m
>> > */,
>> > >                                 1F92F49E1314023E0046367C /*
>> > > CDVPluginResult.h */,
>> > >                                 1F92F49F1314023E0046367C /*
>> > > CDVPluginResult.m */,
>> > > -                EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
>> > > +                               EB80C2AA15DEA63D004D9E7B /*
>>CDVEcho.h
>> */,
>> > >                                 EB80C2AB15DEA63D004D9E7B /*
>>CDVEcho.m
>> */,
>> > >                                 8887FD341090FBE7009987E8 /*
>> > > CDVInvokedUrlCommand.h */,
>> > >                                 8887FD351090FBE7009987E8 /*
>> > > CDVInvokedUrlCommand.m */,
>> > > @@ -290,6 +296,7 @@
>> > >                                 EBFF4DBD16D3FE2E008F452B /*
>> > > CDVWebViewDelegate.h in Headers */,
>> > >                                 EB96673B16A8970A00D86CDF /*
>> > > CDVUserAgentUtil.h in Headers */,
>> > >                                 7E14B5A81705050A0032169E /*
>>CDVTimer.h
>> in
>> > > Headers */,
>> > > +                               1B701028177A61CF00AE11F4 /*
>>CDVShared.h
>> > in
>> > > Headers */,
>> > >                         );
>> > >                         runOnlyForDeploymentPostprocessing = 0;
>> > >                 };
>> > > @@ -368,6 +375,7 @@
>> > >                                 EB96673C16A8970A00D86CDF /*
>> > > CDVUserAgentUtil.m in Sources */,
>> > >                                 EBFF4DBC16D3FE2E008F452B /*
>> > > CDVWebViewDelegate.m in Sources */,
>> > >                                 7E14B5A91705050A0032169E /*
>>CDVTimer.m
>> in
>> > > Sources */,
>> > > +                               1B701029177A61CF00AE11F4 /*
>>CDVShared.m
>> > in
>> > > Sources */,
>> > >                         );
>> > >                         runOnlyForDeploymentPostprocessing = 0;
>> > >                 };
>> > >
>> > >
>> >
>>


Re: ios commit: added cdvshared

Posted by Andrew Grieve <ag...@chromium.org>.
Yeah, I think the need for shared code between plugins is going to come up
a lot. I think it's important to keep Cordova core as leen as possible
though, since that's the API that we promise to provide longer term.
Probably it's fine in this case to just copy & paste the functions into
each plugin. wdyt? Another option is to create a third plugin for the
shared code, but that seems like overkill for such a small amount of code
to me.


On Fri, Jun 28, 2013 at 12:04 PM, Steven Gill <st...@gmail.com>wrote:

> Hey Andrew,
>
> I have no issue with renaming CDVShared.
>
> CDVLocation got split into two plugins, CDVLocation and CDVCompass. Those
> methods were shared between the two, so I split them up and put them in
> CDVShared. Without doing this, you couldn't install both plugins in one
> project.
>
> https://issues.apache.org/jira/browse/CB-3511
>
>
>
> On Fri, Jun 28, 2013 at 8:17 AM, Andrew Grieve <ag...@chromium.org>
> wrote:
>
> > Hey Steve,
> >
> > Just noticed your CDVShared.h commit. For iOS, we have to be really
> careful
> > about namespacing since Obj-C has no namespaces. The category name should
> > being with "CDV". So, instead of JSONMethods, it should be
> > "CDVJSONMethods", or maybe: "CDVExtensions".
> >
> > Since categories are a bit of a murky area, it's also important that each
> > category on a class go in a file names after the class it's modifying.
> > These methods should go in:
> >
> > NSError+CDVExtensions.h
> > CLLocation+CDVExtensions.h
> >
> > Just did a grep, and don't actually see these new methods used
> anywhere...
> > There is a copy of them in CDVLocation.m, but that's it. Maybe we can
> just
> > delete them?
> >
> >
> > On Tue, Jun 25, 2013 at 8:01 PM, <st...@apache.org> wrote:
> >
> > > Updated Branches:
> > >   refs/heads/3.0.0 9ca742180 -> f705b31e2
> > >
> > >
> > > added cdvshared
> > >
> > >
> > > Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
> > > Commit:
> > http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/f705b31e
> > > Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/f705b31e
> > > Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/f705b31e
> > >
> > > Branch: refs/heads/3.0.0
> > > Commit: f705b31e27693bf44f7f2231cb438fa7809e7fba
> > > Parents: 9ca7421
> > > Author: Steven Gill <st...@gmail.com>
> > > Authored: Tue Jun 25 17:01:09 2013 -0700
> > > Committer: Steven Gill <st...@gmail.com>
> > > Committed: Tue Jun 25 17:01:09 2013 -0700
> > >
> > > ----------------------------------------------------------------------
> > >  CordovaLib/Classes/CDVShared.h                  | 35 ++++++++++++
> > >  CordovaLib/Classes/CDVShared.m                  | 59
> > ++++++++++++++++++++
> > >  CordovaLib/CordovaLib.xcodeproj/project.pbxproj | 10 +++-
> > >  3 files changed, 103 insertions(+), 1 deletion(-)
> > > ----------------------------------------------------------------------
> > >
> > >
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.h
> > > ----------------------------------------------------------------------
> > > diff --git a/CordovaLib/Classes/CDVShared.h
> > > b/CordovaLib/Classes/CDVShared.h
> > > new file mode 100644
> > > index 0000000..0b59a37
> > > --- /dev/null
> > > +++ b/CordovaLib/Classes/CDVShared.h
> > > @@ -0,0 +1,35 @@
> > > +/*
> > > + 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 <Foundation/Foundation.h>
> > > +#import <CoreLocation/CoreLocation.h>
> > > +
> > > +
> > > +@interface NSError (JSONMethods)
> > > +
> > > +- (NSString*)JSONRepresentation;
> > > +
> > > +@end
> > > +
> > > +@interface CLLocation (JSONMethods)
> > > +
> > > +- (NSString*)JSONRepresentation;
> > > +
> > > +@end
> > > +
> > >
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.m
> > > ----------------------------------------------------------------------
> > > diff --git a/CordovaLib/Classes/CDVShared.m
> > > b/CordovaLib/Classes/CDVShared.m
> > > new file mode 100644
> > > index 0000000..8756c17
> > > --- /dev/null
> > > +++ b/CordovaLib/Classes/CDVShared.m
> > > @@ -0,0 +1,59 @@
> > > +/*
> > > + 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 "CDVShared.h"
> > > +
> > > +#pragma mark -
> > > +#pragma mark CLLocation(JSONMethods)
> > > +
> > > +@implementation CLLocation (JSONMethods)
> > > +
> > > +- (NSString*)JSONRepresentation
> > > +{
> > > +    return [NSString stringWithFormat:
> > > +            @"{ timestamp: %.00f, \
> > > +            coords: { latitude: %f, longitude: %f, altitude: %.02f,
> > > heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: %.02f
> }
> > \
> > > +            }",
> > > +            [self.timestamp timeIntervalSince1970] * 1000.0,
> > > +            self.coordinate.latitude,
> > > +            self.coordinate.longitude,
> > > +            self.altitude,
> > > +            self.course,
> > > +            self.speed,
> > > +            self.horizontalAccuracy,
> > > +            self.verticalAccuracy
> > > +            ];
> > > +}
> > > +
> > > +@end
> > > +
> > > +#pragma mark NSError(JSONMethods)
> > > +
> > > +@implementation NSError (JSONMethods)
> > > +
> > > +- (NSString*)JSONRepresentation
> > > +{
> > > +    return [NSString stringWithFormat:
> > > +            @"{ code: %d, message: '%@'}",
> > > +            self.code,
> > > +            [self localizedDescription]
> > > +            ];
> > > +}
> > > +
> > > +@end
> > > \ No newline at end of file
> > >
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > > ----------------------------------------------------------------------
> > > diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > > b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > > index bf92ac3..2d97260 100644
> > > --- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > > +++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > > @@ -7,6 +7,8 @@
> > >         objects = {
> > >
> > >  /* Begin PBXBuildFile section */
> > > +               1B701028177A61CF00AE11F4 /* CDVShared.h in Headers */ =
> > > {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /* CDVShared.h
> > */;
> > > };
> > > +               1B701029177A61CF00AE11F4 /* CDVShared.m in Sources */ =
> > > {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /* CDVShared.m
> > */;
> > > };
> > >                 1F92F4A01314023E0046367C /* CDVPluginResult.h in
> Headers
> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /*
> > > CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
> > >                 1F92F4A11314023E0046367C /* CDVPluginResult.m in
> Sources
> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /*
> > > CDVPluginResult.m */; };
> > >                 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ = {isa
> =
> > > PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */; settings
> =
> > > {ATTRIBUTES = (Public, ); }; };
> > > @@ -57,6 +59,8 @@
> > >  /* End PBXBuildFile section */
> > >
> > >  /* Begin PBXFileReference section */
> > > +               1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa =
> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > > name = CDVShared.h; path = Classes/CDVShared.h; sourceTree = "<group>";
> > };
> > > +               1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa =
> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
> > sourcecode.c.objc;
> > > name = CDVShared.m; path = Classes/CDVShared.m; sourceTree = "<group>";
> > };
> > >                 1F92F49E1314023E0046367C /* CDVPluginResult.h */ =
> {isa =
> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > > name = CDVPluginResult.h; path = Classes/CDVPluginResult.h; sourceTree
> =
> > > "<group>"; };
> > >                 1F92F49F1314023E0046367C /* CDVPluginResult.m */ =
> {isa =
> > > PBXFileReference; fileEncoding = 4; lastKnownFileType =
> > sourcecode.c.objc;
> > > name = CDVPluginResult.m; path = Classes/CDVPluginResult.m; sourceTree
> =
> > > "<group>"; };
> > >                 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa =
> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > > name = CDV.h; path = Classes/CDV.h; sourceTree = "<group>"; };
> > > @@ -207,12 +211,14 @@
> > >                                 30C684921407044A004C1A8E /*
> > > CDVURLProtocol.h */,
> > >                                 30C684931407044A004C1A8E /*
> > > CDVURLProtocol.m */,
> > >                                 30C6847E1406CB38004C1A8E /*
> > CDVWhitelist.h
> > > */,
> > > +                               1B701026177A61CF00AE11F4 /* CDVShared.h
> > */,
> > > +                               1B701027177A61CF00AE11F4 /* CDVShared.m
> > */,
> > >                                 30C6847F1406CB38004C1A8E /*
> > CDVWhitelist.m
> > > */,
> > >                                 30E33AF013A7E24B00594D64 /* CDVPlugin.h
> > */,
> > >                                 30E33AF113A7E24B00594D64 /* CDVPlugin.m
> > */,
> > >                                 1F92F49E1314023E0046367C /*
> > > CDVPluginResult.h */,
> > >                                 1F92F49F1314023E0046367C /*
> > > CDVPluginResult.m */,
> > > -                EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
> > > +                               EB80C2AA15DEA63D004D9E7B /* CDVEcho.h
> */,
> > >                                 EB80C2AB15DEA63D004D9E7B /* CDVEcho.m
> */,
> > >                                 8887FD341090FBE7009987E8 /*
> > > CDVInvokedUrlCommand.h */,
> > >                                 8887FD351090FBE7009987E8 /*
> > > CDVInvokedUrlCommand.m */,
> > > @@ -290,6 +296,7 @@
> > >                                 EBFF4DBD16D3FE2E008F452B /*
> > > CDVWebViewDelegate.h in Headers */,
> > >                                 EB96673B16A8970A00D86CDF /*
> > > CDVUserAgentUtil.h in Headers */,
> > >                                 7E14B5A81705050A0032169E /* CDVTimer.h
> in
> > > Headers */,
> > > +                               1B701028177A61CF00AE11F4 /* CDVShared.h
> > in
> > > Headers */,
> > >                         );
> > >                         runOnlyForDeploymentPostprocessing = 0;
> > >                 };
> > > @@ -368,6 +375,7 @@
> > >                                 EB96673C16A8970A00D86CDF /*
> > > CDVUserAgentUtil.m in Sources */,
> > >                                 EBFF4DBC16D3FE2E008F452B /*
> > > CDVWebViewDelegate.m in Sources */,
> > >                                 7E14B5A91705050A0032169E /* CDVTimer.m
> in
> > > Sources */,
> > > +                               1B701029177A61CF00AE11F4 /* CDVShared.m
> > in
> > > Sources */,
> > >                         );
> > >                         runOnlyForDeploymentPostprocessing = 0;
> > >                 };
> > >
> > >
> >
>

Re: ios commit: added cdvshared

Posted by Steven Gill <st...@gmail.com>.
Hey Andrew,

I have no issue with renaming CDVShared.

CDVLocation got split into two plugins, CDVLocation and CDVCompass. Those
methods were shared between the two, so I split them up and put them in
CDVShared. Without doing this, you couldn't install both plugins in one
project.

https://issues.apache.org/jira/browse/CB-3511



On Fri, Jun 28, 2013 at 8:17 AM, Andrew Grieve <ag...@chromium.org> wrote:

> Hey Steve,
>
> Just noticed your CDVShared.h commit. For iOS, we have to be really careful
> about namespacing since Obj-C has no namespaces. The category name should
> being with "CDV". So, instead of JSONMethods, it should be
> "CDVJSONMethods", or maybe: "CDVExtensions".
>
> Since categories are a bit of a murky area, it's also important that each
> category on a class go in a file names after the class it's modifying.
> These methods should go in:
>
> NSError+CDVExtensions.h
> CLLocation+CDVExtensions.h
>
> Just did a grep, and don't actually see these new methods used anywhere...
> There is a copy of them in CDVLocation.m, but that's it. Maybe we can just
> delete them?
>
>
> On Tue, Jun 25, 2013 at 8:01 PM, <st...@apache.org> wrote:
>
> > Updated Branches:
> >   refs/heads/3.0.0 9ca742180 -> f705b31e2
> >
> >
> > added cdvshared
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
> > Commit:
> http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/f705b31e
> > Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/f705b31e
> > Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/f705b31e
> >
> > Branch: refs/heads/3.0.0
> > Commit: f705b31e27693bf44f7f2231cb438fa7809e7fba
> > Parents: 9ca7421
> > Author: Steven Gill <st...@gmail.com>
> > Authored: Tue Jun 25 17:01:09 2013 -0700
> > Committer: Steven Gill <st...@gmail.com>
> > Committed: Tue Jun 25 17:01:09 2013 -0700
> >
> > ----------------------------------------------------------------------
> >  CordovaLib/Classes/CDVShared.h                  | 35 ++++++++++++
> >  CordovaLib/Classes/CDVShared.m                  | 59
> ++++++++++++++++++++
> >  CordovaLib/CordovaLib.xcodeproj/project.pbxproj | 10 +++-
> >  3 files changed, 103 insertions(+), 1 deletion(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.h
> > ----------------------------------------------------------------------
> > diff --git a/CordovaLib/Classes/CDVShared.h
> > b/CordovaLib/Classes/CDVShared.h
> > new file mode 100644
> > index 0000000..0b59a37
> > --- /dev/null
> > +++ b/CordovaLib/Classes/CDVShared.h
> > @@ -0,0 +1,35 @@
> > +/*
> > + 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 <Foundation/Foundation.h>
> > +#import <CoreLocation/CoreLocation.h>
> > +
> > +
> > +@interface NSError (JSONMethods)
> > +
> > +- (NSString*)JSONRepresentation;
> > +
> > +@end
> > +
> > +@interface CLLocation (JSONMethods)
> > +
> > +- (NSString*)JSONRepresentation;
> > +
> > +@end
> > +
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/Classes/CDVShared.m
> > ----------------------------------------------------------------------
> > diff --git a/CordovaLib/Classes/CDVShared.m
> > b/CordovaLib/Classes/CDVShared.m
> > new file mode 100644
> > index 0000000..8756c17
> > --- /dev/null
> > +++ b/CordovaLib/Classes/CDVShared.m
> > @@ -0,0 +1,59 @@
> > +/*
> > + 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 "CDVShared.h"
> > +
> > +#pragma mark -
> > +#pragma mark CLLocation(JSONMethods)
> > +
> > +@implementation CLLocation (JSONMethods)
> > +
> > +- (NSString*)JSONRepresentation
> > +{
> > +    return [NSString stringWithFormat:
> > +            @"{ timestamp: %.00f, \
> > +            coords: { latitude: %f, longitude: %f, altitude: %.02f,
> > heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: %.02f }
> \
> > +            }",
> > +            [self.timestamp timeIntervalSince1970] * 1000.0,
> > +            self.coordinate.latitude,
> > +            self.coordinate.longitude,
> > +            self.altitude,
> > +            self.course,
> > +            self.speed,
> > +            self.horizontalAccuracy,
> > +            self.verticalAccuracy
> > +            ];
> > +}
> > +
> > +@end
> > +
> > +#pragma mark NSError(JSONMethods)
> > +
> > +@implementation NSError (JSONMethods)
> > +
> > +- (NSString*)JSONRepresentation
> > +{
> > +    return [NSString stringWithFormat:
> > +            @"{ code: %d, message: '%@'}",
> > +            self.code,
> > +            [self localizedDescription]
> > +            ];
> > +}
> > +
> > +@end
> > \ No newline at end of file
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > ----------------------------------------------------------------------
> > diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > index bf92ac3..2d97260 100644
> > --- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > +++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
> > @@ -7,6 +7,8 @@
> >         objects = {
> >
> >  /* Begin PBXBuildFile section */
> > +               1B701028177A61CF00AE11F4 /* CDVShared.h in Headers */ =
> > {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /* CDVShared.h
> */;
> > };
> > +               1B701029177A61CF00AE11F4 /* CDVShared.m in Sources */ =
> > {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /* CDVShared.m
> */;
> > };
> >                 1F92F4A01314023E0046367C /* CDVPluginResult.h in Headers
> > */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /*
> > CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
> >                 1F92F4A11314023E0046367C /* CDVPluginResult.m in Sources
> > */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /*
> > CDVPluginResult.m */; };
> >                 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ = {isa =
> > PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */; settings =
> > {ATTRIBUTES = (Public, ); }; };
> > @@ -57,6 +59,8 @@
> >  /* End PBXBuildFile section */
> >
> >  /* Begin PBXFileReference section */
> > +               1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa =
> > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > name = CDVShared.h; path = Classes/CDVShared.h; sourceTree = "<group>";
> };
> > +               1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa =
> > PBXFileReference; fileEncoding = 4; lastKnownFileType =
> sourcecode.c.objc;
> > name = CDVShared.m; path = Classes/CDVShared.m; sourceTree = "<group>";
> };
> >                 1F92F49E1314023E0046367C /* CDVPluginResult.h */ = {isa =
> > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > name = CDVPluginResult.h; path = Classes/CDVPluginResult.h; sourceTree =
> > "<group>"; };
> >                 1F92F49F1314023E0046367C /* CDVPluginResult.m */ = {isa =
> > PBXFileReference; fileEncoding = 4; lastKnownFileType =
> sourcecode.c.objc;
> > name = CDVPluginResult.m; path = Classes/CDVPluginResult.m; sourceTree =
> > "<group>"; };
> >                 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa =
> > PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
> > name = CDV.h; path = Classes/CDV.h; sourceTree = "<group>"; };
> > @@ -207,12 +211,14 @@
> >                                 30C684921407044A004C1A8E /*
> > CDVURLProtocol.h */,
> >                                 30C684931407044A004C1A8E /*
> > CDVURLProtocol.m */,
> >                                 30C6847E1406CB38004C1A8E /*
> CDVWhitelist.h
> > */,
> > +                               1B701026177A61CF00AE11F4 /* CDVShared.h
> */,
> > +                               1B701027177A61CF00AE11F4 /* CDVShared.m
> */,
> >                                 30C6847F1406CB38004C1A8E /*
> CDVWhitelist.m
> > */,
> >                                 30E33AF013A7E24B00594D64 /* CDVPlugin.h
> */,
> >                                 30E33AF113A7E24B00594D64 /* CDVPlugin.m
> */,
> >                                 1F92F49E1314023E0046367C /*
> > CDVPluginResult.h */,
> >                                 1F92F49F1314023E0046367C /*
> > CDVPluginResult.m */,
> > -                EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
> > +                               EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */,
> >                                 EB80C2AB15DEA63D004D9E7B /* CDVEcho.m */,
> >                                 8887FD341090FBE7009987E8 /*
> > CDVInvokedUrlCommand.h */,
> >                                 8887FD351090FBE7009987E8 /*
> > CDVInvokedUrlCommand.m */,
> > @@ -290,6 +296,7 @@
> >                                 EBFF4DBD16D3FE2E008F452B /*
> > CDVWebViewDelegate.h in Headers */,
> >                                 EB96673B16A8970A00D86CDF /*
> > CDVUserAgentUtil.h in Headers */,
> >                                 7E14B5A81705050A0032169E /* CDVTimer.h in
> > Headers */,
> > +                               1B701028177A61CF00AE11F4 /* CDVShared.h
> in
> > Headers */,
> >                         );
> >                         runOnlyForDeploymentPostprocessing = 0;
> >                 };
> > @@ -368,6 +375,7 @@
> >                                 EB96673C16A8970A00D86CDF /*
> > CDVUserAgentUtil.m in Sources */,
> >                                 EBFF4DBC16D3FE2E008F452B /*
> > CDVWebViewDelegate.m in Sources */,
> >                                 7E14B5A91705050A0032169E /* CDVTimer.m in
> > Sources */,
> > +                               1B701029177A61CF00AE11F4 /* CDVShared.m
> in
> > Sources */,
> >                         );
> >                         runOnlyForDeploymentPostprocessing = 0;
> >                 };
> >
> >
>