xref: /aosp_15_r20/external/cronet/base/apple/bundle_locations.mm (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker// Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker#include "base/apple/bundle_locations.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker#include "base/apple/foundation_util.h"
8*6777b538SAndroid Build Coastguard Worker#include "base/check.h"
9*6777b538SAndroid Build Coastguard Worker#include "base/strings/sys_string_conversions.h"
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Workernamespace base::apple {
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Workernamespace {
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard WorkerNSBundle* g_override_framework_bundle = nil;
16*6777b538SAndroid Build Coastguard WorkerNSBundle* g_override_outer_bundle = nil;
17*6777b538SAndroid Build Coastguard Worker
18*6777b538SAndroid Build Coastguard Worker}  // namespace
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard WorkerNSBundle* MainBundle() {
21*6777b538SAndroid Build Coastguard Worker  return NSBundle.mainBundle;
22*6777b538SAndroid Build Coastguard Worker}
23*6777b538SAndroid Build Coastguard Worker
24*6777b538SAndroid Build Coastguard WorkerNSURL* MainBundleURL() {
25*6777b538SAndroid Build Coastguard Worker  return MainBundle().bundleURL;
26*6777b538SAndroid Build Coastguard Worker}
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard WorkerFilePath MainBundlePath() {
29*6777b538SAndroid Build Coastguard Worker  return apple::NSStringToFilePath(MainBundle().bundlePath);
30*6777b538SAndroid Build Coastguard Worker}
31*6777b538SAndroid Build Coastguard Worker
32*6777b538SAndroid Build Coastguard Workerstd::string MainBundleIdentifier() {
33*6777b538SAndroid Build Coastguard Worker  return base::SysNSStringToUTF8(MainBundle().bundleIdentifier);
34*6777b538SAndroid Build Coastguard Worker}
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard WorkerNSBundle* OuterBundle() {
37*6777b538SAndroid Build Coastguard Worker  if (g_override_outer_bundle) {
38*6777b538SAndroid Build Coastguard Worker    return g_override_outer_bundle;
39*6777b538SAndroid Build Coastguard Worker  }
40*6777b538SAndroid Build Coastguard Worker  return NSBundle.mainBundle;
41*6777b538SAndroid Build Coastguard Worker}
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard WorkerNSURL* OuterBundleURL() {
44*6777b538SAndroid Build Coastguard Worker  return OuterBundle().bundleURL;
45*6777b538SAndroid Build Coastguard Worker}
46*6777b538SAndroid Build Coastguard Worker
47*6777b538SAndroid Build Coastguard WorkerFilePath OuterBundlePath() {
48*6777b538SAndroid Build Coastguard Worker  return apple::NSStringToFilePath(OuterBundle().bundlePath);
49*6777b538SAndroid Build Coastguard Worker}
50*6777b538SAndroid Build Coastguard Worker
51*6777b538SAndroid Build Coastguard WorkerNSBundle* FrameworkBundle() {
52*6777b538SAndroid Build Coastguard Worker  if (g_override_framework_bundle) {
53*6777b538SAndroid Build Coastguard Worker    return g_override_framework_bundle;
54*6777b538SAndroid Build Coastguard Worker  }
55*6777b538SAndroid Build Coastguard Worker  return NSBundle.mainBundle;
56*6777b538SAndroid Build Coastguard Worker}
57*6777b538SAndroid Build Coastguard Worker
58*6777b538SAndroid Build Coastguard WorkerFilePath FrameworkBundlePath() {
59*6777b538SAndroid Build Coastguard Worker  return apple::NSStringToFilePath(FrameworkBundle().bundlePath);
60*6777b538SAndroid Build Coastguard Worker}
61*6777b538SAndroid Build Coastguard Worker
62*6777b538SAndroid Build Coastguard Workernamespace {
63*6777b538SAndroid Build Coastguard Worker
64*6777b538SAndroid Build Coastguard WorkerNSBundle* BundleFromPath(const FilePath& file_path) {
65*6777b538SAndroid Build Coastguard Worker  if (file_path.empty()) {
66*6777b538SAndroid Build Coastguard Worker    return nil;
67*6777b538SAndroid Build Coastguard Worker  }
68*6777b538SAndroid Build Coastguard Worker
69*6777b538SAndroid Build Coastguard Worker  NSBundle* bundle = [NSBundle bundleWithURL:apple::FilePathToNSURL(file_path)];
70*6777b538SAndroid Build Coastguard Worker  CHECK(bundle) << "Failed to load the bundle at " << file_path.value();
71*6777b538SAndroid Build Coastguard Worker
72*6777b538SAndroid Build Coastguard Worker  return bundle;
73*6777b538SAndroid Build Coastguard Worker}
74*6777b538SAndroid Build Coastguard Worker
75*6777b538SAndroid Build Coastguard Worker}  // namespace
76*6777b538SAndroid Build Coastguard Worker
77*6777b538SAndroid Build Coastguard Workervoid SetOverrideOuterBundle(NSBundle* bundle) {
78*6777b538SAndroid Build Coastguard Worker  g_override_outer_bundle = bundle;
79*6777b538SAndroid Build Coastguard Worker}
80*6777b538SAndroid Build Coastguard Worker
81*6777b538SAndroid Build Coastguard Workervoid SetOverrideFrameworkBundle(NSBundle* bundle) {
82*6777b538SAndroid Build Coastguard Worker  g_override_framework_bundle = bundle;
83*6777b538SAndroid Build Coastguard Worker}
84*6777b538SAndroid Build Coastguard Worker
85*6777b538SAndroid Build Coastguard Workervoid SetOverrideOuterBundlePath(const FilePath& file_path) {
86*6777b538SAndroid Build Coastguard Worker  NSBundle* bundle = BundleFromPath(file_path);
87*6777b538SAndroid Build Coastguard Worker  g_override_outer_bundle = bundle;
88*6777b538SAndroid Build Coastguard Worker}
89*6777b538SAndroid Build Coastguard Worker
90*6777b538SAndroid Build Coastguard Workervoid SetOverrideFrameworkBundlePath(const FilePath& file_path) {
91*6777b538SAndroid Build Coastguard Worker  NSBundle* bundle = BundleFromPath(file_path);
92*6777b538SAndroid Build Coastguard Worker  g_override_framework_bundle = bundle;
93*6777b538SAndroid Build Coastguard Worker}
94*6777b538SAndroid Build Coastguard Worker
95*6777b538SAndroid Build Coastguard Worker}  // namespace base::apple
96