| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "ios/chrome/common/app_group/app_group_metrics_mainapp.h" | 5 #include "ios/chrome/common/app_group/app_group_metrics_mainapp.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/mac/scoped_nsobject.h" | |
| 11 #include "ios/chrome/common/app_group/app_group_constants.h" | 10 #include "ios/chrome/common/app_group/app_group_constants.h" |
| 12 #include "ios/chrome/common/app_group/app_group_metrics.h" | 11 #include "ios/chrome/common/app_group/app_group_metrics.h" |
| 13 | 12 |
| 13 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 14 #error "This file requires ARC support." |
| 15 #endif |
| 16 |
| 14 namespace app_group { | 17 namespace app_group { |
| 15 | 18 |
| 16 namespace main_app { | 19 namespace main_app { |
| 17 | 20 |
| 18 void ProcessPendingLogs( | 21 void ProcessPendingLogs(ProceduralBlockWithData callback) { |
| 19 const base::mac::ScopedBlock<ProceduralBlockWithData>& callback) { | |
| 20 NSFileManager* file_manager = [NSFileManager defaultManager]; | 22 NSFileManager* file_manager = [NSFileManager defaultManager]; |
| 21 NSURL* store_url = [file_manager | 23 NSURL* store_url = [file_manager |
| 22 containerURLForSecurityApplicationGroupIdentifier:ApplicationGroup()]; | 24 containerURLForSecurityApplicationGroupIdentifier:ApplicationGroup()]; |
| 23 NSURL* log_dir_url = | 25 NSURL* log_dir_url = |
| 24 [store_url URLByAppendingPathComponent:app_group::kPendingLogFileDirectory | 26 [store_url URLByAppendingPathComponent:app_group::kPendingLogFileDirectory |
| 25 isDirectory:YES]; | 27 isDirectory:YES]; |
| 26 | 28 |
| 27 NSArray* pending_logs = | 29 NSArray* pending_logs = |
| 28 [file_manager contentsOfDirectoryAtPath:[log_dir_url path] error:nil]; | 30 [file_manager contentsOfDirectoryAtPath:[log_dir_url path] error:nil]; |
| 29 if (!pending_logs) | 31 if (!pending_logs) |
| 30 return; | 32 return; |
| 31 for (NSString* pending_log : pending_logs) { | 33 for (NSString* pending_log : pending_logs) { |
| 32 if ([pending_log hasSuffix:app_group::kPendingLogFileSuffix]) { | 34 if ([pending_log hasSuffix:app_group::kPendingLogFileSuffix]) { |
| 33 NSURL* file_url = | 35 NSURL* file_url = |
| 34 [log_dir_url URLByAppendingPathComponent:pending_log isDirectory:NO]; | 36 [log_dir_url URLByAppendingPathComponent:pending_log isDirectory:NO]; |
| 35 if (callback) { | 37 if (callback) { |
| 36 NSData* log_content = [file_manager contentsAtPath:[file_url path]]; | 38 NSData* log_content = [file_manager contentsAtPath:[file_url path]]; |
| 37 callback.get()(log_content); | 39 callback(log_content); |
| 38 } | 40 } |
| 39 [file_manager removeItemAtURL:file_url error:nil]; | 41 [file_manager removeItemAtURL:file_url error:nil]; |
| 40 } | 42 } |
| 41 } | 43 } |
| 42 } | 44 } |
| 43 | 45 |
| 44 void EnableMetrics(NSString* client_id, | 46 void EnableMetrics(NSString* client_id, |
| 45 NSString* brand_code, | 47 NSString* brand_code, |
| 46 int64_t install_date, | 48 int64_t install_date, |
| 47 int64_t enable_metrics_date) { | 49 int64_t enable_metrics_date) { |
| 48 base::scoped_nsobject<NSUserDefaults> shared_defaults( | 50 NSUserDefaults* shared_defaults = |
| 49 [[NSUserDefaults alloc] initWithSuiteName:ApplicationGroup()]); | 51 [[NSUserDefaults alloc] initWithSuiteName:ApplicationGroup()]; |
| 50 [shared_defaults setObject:client_id forKey:@(kChromeAppClientID)]; | 52 [shared_defaults setObject:client_id forKey:@(kChromeAppClientID)]; |
| 51 | 53 |
| 52 [shared_defaults | 54 [shared_defaults |
| 53 setObject:[NSString stringWithFormat:@"%lld", enable_metrics_date] | 55 setObject:[NSString stringWithFormat:@"%lld", enable_metrics_date] |
| 54 forKey:@(kUserMetricsEnabledDate)]; | 56 forKey:@(kUserMetricsEnabledDate)]; |
| 55 | 57 |
| 56 [shared_defaults setObject:[NSString stringWithFormat:@"%lld", install_date] | 58 [shared_defaults setObject:[NSString stringWithFormat:@"%lld", install_date] |
| 57 forKey:@(kInstallDate)]; | 59 forKey:@(kInstallDate)]; |
| 58 | 60 |
| 59 [shared_defaults setObject:brand_code forKey:@(kBrandCode)]; | 61 [shared_defaults setObject:brand_code forKey:@(kBrandCode)]; |
| 60 } | 62 } |
| 61 | 63 |
| 62 void DisableMetrics() { | 64 void DisableMetrics() { |
| 63 base::scoped_nsobject<NSUserDefaults> shared_defaults( | 65 NSUserDefaults* shared_defaults = |
| 64 [[NSUserDefaults alloc] initWithSuiteName:ApplicationGroup()]); | 66 [[NSUserDefaults alloc] initWithSuiteName:ApplicationGroup()]; |
| 65 [shared_defaults removeObjectForKey:@(kChromeAppClientID)]; | 67 [shared_defaults removeObjectForKey:@(kChromeAppClientID)]; |
| 66 } | 68 } |
| 67 | 69 |
| 68 } // namespace main_app | 70 } // namespace main_app |
| 69 | 71 |
| 70 } // namespace app_group | 72 } // namespace app_group |
| OLD | NEW |