mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git chrome/browser/ui/startup/startup_browser_creator.cc chrome/browser/ui/startup/startup_browser_creator.cc
 | |
| index f5fdf2a05a7e7..4622df9f7b0cb 100644
 | |
| --- chrome/browser/ui/startup/startup_browser_creator.cc
 | |
| +++ chrome/browser/ui/startup/startup_browser_creator.cc
 | |
| @@ -603,6 +603,13 @@ std::optional<ash::KioskAppId> GetAppId(const base::CommandLine& command_line,
 | |
|  }
 | |
|  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 | |
|  
 | |
| +StartupBrowserCreator::ProcessCommandLineCallback*
 | |
| +GetProcessCommandLineCallback() {
 | |
| +  static base::NoDestructor<StartupBrowserCreator::ProcessCommandLineCallback>
 | |
| +      callback;
 | |
| +  return callback.get();
 | |
| +}
 | |
| +
 | |
|  }  // namespace
 | |
|  
 | |
|  StartupProfileMode StartupProfileModeFromReason(
 | |
| @@ -1487,6 +1494,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile(
 | |
|        {profile, mode}, last_opened_profiles);
 | |
|  }
 | |
|  
 | |
| +// static
 | |
| +void StartupBrowserCreator::RegisterProcessCommandLineCallback(
 | |
| +    ProcessCommandLineCallback cb) {
 | |
| +  *GetProcessCommandLineCallback() = cb;
 | |
| +}
 | |
| +
 | |
|  // static
 | |
|  void StartupBrowserCreator::ProcessCommandLineAlreadyRunning(
 | |
|      const base::CommandLine& command_line,
 | |
| @@ -1496,6 +1509,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning(
 | |
|      return;
 | |
|    }
 | |
|  
 | |
| +  auto* cb = GetProcessCommandLineCallback();
 | |
| +  if (!cb->is_null() && cb->Run(command_line, cur_dir)) {
 | |
| +    return;
 | |
| +  }
 | |
| +
 | |
|    Profile* profile = nullptr;
 | |
|    StartupProfileMode mode =
 | |
|        StartupProfileModeFromReason(profile_path_info.reason);
 | |
| diff --git chrome/browser/ui/startup/startup_browser_creator.h chrome/browser/ui/startup/startup_browser_creator.h
 | |
| index fc41cf3c88d9b..e0e51cb9e2dec 100644
 | |
| --- chrome/browser/ui/startup/startup_browser_creator.h
 | |
| +++ chrome/browser/ui/startup/startup_browser_creator.h
 | |
| @@ -9,6 +9,7 @@
 | |
|  #include <vector>
 | |
|  
 | |
|  #include "base/files/file_path.h"
 | |
| +#include "base/functional/callback.h"
 | |
|  #include "base/gtest_prod_util.h"
 | |
|  #include "base/memory/raw_ptr.h"
 | |
|  #include "build/build_config.h"
 | |
| @@ -136,6 +137,13 @@ class StartupBrowserCreator {
 | |
|               StartupProfileInfo profile_info,
 | |
|               const Profiles& last_opened_profiles);
 | |
|  
 | |
| +  // Registers a callback that will be executed each time
 | |
| +  // ProcessCommandLineAlreadyRunning is called.
 | |
| +  using ProcessCommandLineCallback = base::RepeatingCallback<bool(
 | |
| +      const base::CommandLine& command_line,
 | |
| +      const base::FilePath& cur_dir)>;
 | |
| +  static void RegisterProcessCommandLineCallback(ProcessCommandLineCallback cb);
 | |
| +
 | |
|    // This function performs command-line handling and is invoked only after
 | |
|    // start up (for example when we get a start request for another process).
 | |
|    // |command_line| holds the command line we need to process.
 |