Use a DictionaryValue everywhere instead of a string map.

This commit is contained in:
Charlie Hess 2016-05-02 16:18:58 -07:00
parent 2295f3a832
commit 90cc10944a
9 changed files with 37 additions and 38 deletions

View file

@ -3,8 +3,9 @@
// found in the LICENSE file.
#import "atom/browser/mac/atom_application_delegate.h"
#import "atom/browser/mac/atom_application.h"
#import "atom/browser/mac/mac_native_converter.h"
#include "atom/browser/browser.h"
#include "base/strings/sys_string_conversions.h"
@ -64,19 +65,11 @@ continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler {
std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType));
std::map<std::string, std::string> user_info;
NSArray* keys = [userActivity.userInfo allKeys];
for (NSString* key in keys)
{
NSString* value = [userActivity.userInfo objectForKey:key];
std::string key_str(base::SysNSStringToUTF8(key));
std::string value_str(base::SysNSStringToUTF8(value));
user_info[key_str] = value_str;
}
MacNativeConverter* converter = [[MacNativeConverter alloc] init];
const base::DictionaryValue* user_info = [converter dictionaryToDictionaryValue:userActivity.userInfo];
atom::Browser* browser = atom::Browser::Get();
return browser->ContinueUserActivity(activity_type, user_info) ? YES : NO;
return browser->ContinueUserActivity(activity_type, *user_info) ? YES : NO;
}
@end

View file

@ -5,7 +5,10 @@
@interface MacNativeConverter : NSObject
- (base::ListValue*)arrayToV8:(NSArray*)nsArray;
- (base::DictionaryValue*)dictionaryToV8:(NSDictionary*)nsDictionary;
- (base::ListValue*)arrayToListValue:(NSArray*)nsArray;
- (base::DictionaryValue*)dictionaryToDictionaryValue:(NSDictionary*)nsDictionary;
- (NSArray*)arrayFromListValue:(const base::ListValue&)list;
- (NSDictionary*)dictionaryFromDictionaryValue:(const base::DictionaryValue&)dict;
@end

View file

@ -2,14 +2,14 @@
@implementation MacNativeConverter
- (base::ListValue*)arrayToV8:(NSArray*)nsArray {
- (base::ListValue*)arrayToListValue:(NSArray*)nsArray {
scoped_ptr<base::ListValue> list(new base::ListValue);
for (id value in nsArray) {
if ([value isKindOfClass:[NSArray class]]) {
list->Append([self arrayToV8:value]);
list->Append([self arrayToListValue:value]);
} else if ([value isKindOfClass:[NSDictionary class]]) {
list->Append([self dictionaryToV8:value]);
list->Append([self dictionaryToDictionaryValue:value]);
} else if ([value isKindOfClass:[NSString class]]) {
list->AppendString(base::SysNSStringToUTF8(value));
} else if ([value isKindOfClass:[NSNumber class]]) {
@ -20,7 +20,7 @@
return list.get();
}
- (base::DictionaryValue*)dictionaryToV8:(NSDictionary*)nsDictionary {
- (base::DictionaryValue*)dictionaryToDictionaryValue:(NSDictionary*)nsDictionary {
scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
NSEnumerator *it = [nsDictionary keyEnumerator];
@ -30,9 +30,9 @@
std::string key_str(base::SysNSStringToUTF8(key));
if ([value isKindOfClass:[NSArray class]]) {
dict->Set(key_str, [self arrayToV8:value]);
dict->Set(key_str, [self arrayToListValue:value]);
} else if ([value isKindOfClass:[NSDictionary class]]) {
dict->Set(key_str, [self dictionaryToV8:value]);
dict->Set(key_str, [self dictionaryToDictionaryValue:value]);
} else if ([value isKindOfClass:[NSString class]]) {
dict->SetString(key_str, base::SysNSStringToUTF8(value));
} else if ([value isKindOfClass:[NSNumber class]]) {
@ -43,4 +43,12 @@
return dict.get();
}
- (NSArray*)arrayFromListValue:(const base::ListValue&)list {
return [[NSArray alloc] init];
}
- (NSDictionary*)dictionaryFromDictionaryValue:(const base::DictionaryValue&)dict {
return [[NSDictionary alloc] init];
}
@end