[iOS] Upstream safe mode utils
[chromium-blink-merge.git] / ios / chrome / app / safe_mode_crashing_modules_config.mm
blob7dd5e90f67d8f13ecc62e0acc05655ca49477b83
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "ios/chrome/app/safe_mode_crashing_modules_config.h"
7 #include "base/logging.h"
9 namespace {
11 NSString* const kStartupCrashModulesKey = @"StartupCrashModules";
12 NSString* const kModuleFriendlyNameKey = @"ModuleFriendlyName";
14 }  // namespace
16 @implementation SafeModeCrashingModulesConfig
18 + (SafeModeCrashingModulesConfig*)sharedInstance {
19   static SafeModeCrashingModulesConfig* instance =
20       [[SafeModeCrashingModulesConfig alloc] init];
21   return instance;
24 - (instancetype)init {
25   return [super initWithAppId:nil version:nil plist:@"CrashingModules.plist"];
28 - (NSString*)startupCrashModuleFriendlyName:(NSString*)modulePath {
29   NSDictionary* configData = [self dictionaryFromConfig];
30   NSDictionary* modules = [configData objectForKey:kStartupCrashModulesKey];
31   if (modules) {
32     DCHECK([modules isKindOfClass:[NSDictionary class]]);
33     NSDictionary* module = modules[modulePath];
34     if (module) {
35       DCHECK([module isKindOfClass:[NSDictionary class]]);
36       return module[kModuleFriendlyNameKey];
37     }
38   }
39   return nil;
42 @end