* chore: iwyu buildflags.h * chore: iwyu dictionary.h * chore: iwyu arguments.h * chore: iwyu values.h * chore: iwyu compiler_specific.h * chore: iwyu binder_map.h * chore: iwyu <vector> * chore: iwyu <set> * chore: iwyu raw_ptr * chore: iwyu gfx/canvas.h * chore: iwyu gfx/color_utils.h * chore: iwyu base/strings/stringprintf.h * chore: iwyu base/task/thread_pool.h * chore: iwyu base/no_destructor.h * chore: iwyu base/path_service.h * chore: iwyu base/files/file_pathh * chore: iwyu base/strings/sys_string_conversions.h * chore: iwyu base/logging.h * chore: iwyu base/command_line.h * chore: iwyu base/files/file_util.h * chore: iwyu base/files/scoped_file.h * chore: iwyu base/strings/utf_string_conversions.h * chore: iwyu base/environment.h * chore: iwyu base/scoped_observation.h * chore: iwyu base/strings/string_split.h * chore: iwyu base/strings/pattern.h * chore: iwyu base/json/string_escape.h * chore: iwyu base/json/json_reader.h * chore: iwyu base/memory/singleton.h * chore: iwyu base/observer_list.h * chore: iwyu base/timer/timer.h * fixup! chore: iwyu values.h * chore: iwyu shell/browser/browser.h * chore: iwyu base/stl_util.h * chore: iwyu base/strings/string_util.h * chore: iwyu shell/browser/javascript_environment.h * chore: iwyu base/memory/ref_counted.h * chore: iwyu base/environment.h * chore: iwyu content/public/browser/browser_thread.h * chore: remove unused typedef gin_helper::EventEmitter::ValueArray * chore: iwyu gin/wrappable.h * chore: iwyu shell/common/gin_helper/function_template_extensions.h * chore: iwyu shell/common/gin_converters/login_item_settings_converter.h * chore: iwyu shell/common/gin_helper/arguments.h * chore: iwyu ui/gfx/skia_util.h * chore: iwyu ui/gfx/geometry/rect.h * chore: iwyu ui/gfx/image/image.h * chore: iwyu base/strings/strcat.h * chore: iwyu ui/native_theme/native_theme.h * fixup! chore: iwyu shell/browser/javascript_environment.h * fixup! chore: iwyu gfx/canvas.h * fixup! chore: iwyu content/public/browser/browser_thread.h * fixup! chore: iwyu ui/native_theme/native_theme.h * fixup! chore: iwyu ui/native_theme/native_theme.h
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 | 
						|
// Copyright (c) 2013 Adam Roben <adam@roben.org>. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style license that can be
 | 
						|
// found in the LICENSE-CHROMIUM file.
 | 
						|
 | 
						|
#include "shell/common/mac/main_application_bundle.h"
 | 
						|
 | 
						|
#include "base/apple/bundle_locations.h"
 | 
						|
#include "base/apple/foundation_util.h"
 | 
						|
#include "base/files/file_path.h"
 | 
						|
#include "base/path_service.h"
 | 
						|
#include "content/browser/mac_helpers.h"
 | 
						|
 | 
						|
namespace electron {
 | 
						|
 | 
						|
namespace {
 | 
						|
 | 
						|
bool HasMainProcessKey() {
 | 
						|
  NSDictionary* info_dictionary = [base::apple::MainBundle() infoDictionary];
 | 
						|
  return
 | 
						|
      [[info_dictionary objectForKey:@"ElectronMainProcess"] boolValue] != NO;
 | 
						|
}
 | 
						|
 | 
						|
}  // namespace
 | 
						|
 | 
						|
base::FilePath MainApplicationBundlePath() {
 | 
						|
  // Start out with the path to the running executable.
 | 
						|
  base::FilePath path;
 | 
						|
  base::PathService::Get(base::FILE_EXE, &path);
 | 
						|
 | 
						|
  // Up to Contents.
 | 
						|
  if (!HasMainProcessKey() &&
 | 
						|
      (path.value().ends_with(" Helper") ||
 | 
						|
       path.value().ends_with(content::kMacHelperSuffix_plugin) ||
 | 
						|
       path.value().ends_with(content::kMacHelperSuffix_renderer) ||
 | 
						|
       path.value().ends_with(content::kMacHelperSuffix_gpu))) {
 | 
						|
    // The running executable is the helper. Go up five steps:
 | 
						|
    // Contents/Frameworks/Helper.app/Contents/MacOS/Helper
 | 
						|
    // ^ to here                                     ^ from here
 | 
						|
    path = path.DirName().DirName().DirName().DirName().DirName();
 | 
						|
  } else {
 | 
						|
    // One step up to MacOS, another to Contents.
 | 
						|
    path = path.DirName().DirName();
 | 
						|
  }
 | 
						|
  DCHECK_EQ(path.BaseName().value(), "Contents");
 | 
						|
 | 
						|
  // Up one more level to the .app.
 | 
						|
  path = path.DirName();
 | 
						|
  DCHECK_EQ(path.BaseName().Extension(), ".app");
 | 
						|
 | 
						|
  return path;
 | 
						|
}
 | 
						|
 | 
						|
NSBundle* MainApplicationBundle() {
 | 
						|
  return [NSBundle bundleWithPath:base::apple::FilePathToNSString(
 | 
						|
                                      MainApplicationBundlePath())];
 | 
						|
}
 | 
						|
 | 
						|
}  // namespace electron
 |