OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/chrome/browser/ui/commands/set_up_for_testing_command.h" | 5 #import "ios/chrome/browser/ui/commands/set_up_for_testing_command.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/strings/string_number_conversions.h" |
8 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" | 9 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" |
9 #import "net/base/mac/url_conversions.h" | 10 #include "net/base/url_util.h" |
10 #import "third_party/google_toolbox_for_mac/src/Foundation/GTMNSDictionary+URLAr
guments.h" | |
11 #include "url/gurl.h" | 11 #include "url/gurl.h" |
12 | 12 |
13 namespace { | 13 namespace { |
14 // Clear all browsing data. | 14 // Clear all browsing data. |
15 NSString* const kClearBrowsingData = @"clearBrowsingData"; | 15 const char kClearBrowsingData[] = "clearBrowsingData"; |
16 // Close existing tabs. | 16 // Close existing tabs. |
17 NSString* const kCloseTabs = @"closeTabs"; | 17 const char kCloseTabs[] = "closeTabs"; |
18 // Number of new tabs. | 18 // Number of new tabs. |
19 NSString* const kNumberOfNewTabs = @"numberOfNewTabs"; | 19 const char kNumberOfNewTabs[] = "numberOfNewTabs"; |
20 } // namespace | 20 } // namespace |
21 | 21 |
22 @implementation SetUpForTestingCommand { | 22 @implementation SetUpForTestingCommand |
23 // Whether the browsing data should be cleared. | |
24 BOOL _clearBrowsingData; | |
25 // Whether the existing tabs should be closed. | |
26 BOOL _closeTabs; | |
27 // The number of new tabs to create. | |
28 NSInteger _numberOfNewTabs; | |
29 } | |
30 | 23 |
31 @synthesize clearBrowsingData = _clearBrowsingData; | 24 @synthesize clearBrowsingData = _clearBrowsingData; |
32 @synthesize closeTabs = _closeTabs; | 25 @synthesize closeTabs = _closeTabs; |
33 @synthesize numberOfNewTabs = _numberOfNewTabs; | 26 @synthesize numberOfNewTabs = _numberOfNewTabs; |
34 | 27 |
| 28 - (instancetype)initWithTag:(NSInteger)tag { |
| 29 NOTREACHED(); |
| 30 return nil; |
| 31 } |
| 32 |
35 - (instancetype)initWithURL:(const GURL&)url { | 33 - (instancetype)initWithURL:(const GURL&)url { |
36 // TODO(ios): Rewrite to use GetValueForKeyInQuery. | 34 std::string value; |
37 NSURL* nsurl = net::NSURLWithGURL(url); | 35 int numberOfNewTabs = 0; |
38 DCHECK(nsurl); | 36 if (net::GetValueForKeyInQuery(url, kNumberOfNewTabs, &value)) { |
39 NSDictionary* urlArguments = | 37 if (!base::StringToInt(value, &numberOfNewTabs) || numberOfNewTabs < 0) { |
40 [NSDictionary gtm_dictionaryWithHttpArgumentsString:nsurl.query]; | 38 // Ignore incorrect value for "numberOfNewTabs". |
41 BOOL clearBrowsingData = | 39 numberOfNewTabs = 0; |
42 [urlArguments objectForKey:kClearBrowsingData] != nil; | 40 } |
43 BOOL closeTabs = [urlArguments objectForKey:kCloseTabs] != nil; | 41 } |
44 NSInteger numberOfNewTabs = | 42 std::string ignored; |
45 [[urlArguments objectForKey:kNumberOfNewTabs] integerValue]; | 43 bool clearBrowsingData = |
46 | 44 net::GetValueForKeyInQuery(url, kClearBrowsingData, &ignored); |
| 45 bool closeTabs = net::GetValueForKeyInQuery(url, kCloseTabs, &ignored); |
47 return [self initWithClearBrowsingData:clearBrowsingData | 46 return [self initWithClearBrowsingData:clearBrowsingData |
48 closeTabs:closeTabs | 47 closeTabs:closeTabs |
49 numberOfNewTabs:numberOfNewTabs]; | 48 numberOfNewTabs:numberOfNewTabs]; |
50 } | 49 } |
51 | 50 |
52 - (instancetype)initWithClearBrowsingData:(BOOL)clearBrowsingData | 51 - (instancetype)initWithClearBrowsingData:(BOOL)clearBrowsingData |
53 closeTabs:(BOOL)closeTabs | 52 closeTabs:(BOOL)closeTabs |
54 numberOfNewTabs:(NSInteger)numberOfNewTabs { | 53 numberOfNewTabs:(NSInteger)numberOfNewTabs { |
55 self = [super init]; | 54 self = [super initWithTag:IDC_SETUP_FOR_TESTING]; |
56 if (self) { | 55 if (self) { |
57 _clearBrowsingData = clearBrowsingData; | 56 _clearBrowsingData = clearBrowsingData; |
58 _closeTabs = closeTabs; | 57 _closeTabs = closeTabs; |
59 _numberOfNewTabs = numberOfNewTabs; | 58 _numberOfNewTabs = numberOfNewTabs; |
60 } | 59 } |
61 return self; | 60 return self; |
62 } | 61 } |
63 | 62 |
64 - (NSInteger)tag { | |
65 return IDC_SETUP_FOR_TESTING; | |
66 } | |
67 | |
68 @end | 63 @end |
OLD | NEW |