15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Wrapper to the parameter list for the "main" entry points (browser, renderer,
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// plugin) to shield the call sites from the differences between platforms
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (e.g., POSIX doesn't need to pass any sandbox information).
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_PUBLIC_COMMON_MAIN_FUNCTION_PARAMS_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_COMMON_MAIN_FUNCTION_PARAMS_H_
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h"
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/command_line.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sandbox {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SandboxInterfaceInfo;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace mac {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ScopedNSAutoreleasePool;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct MainFunctionParams {
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  explicit MainFunctionParams(const base::CommandLine& cl)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      : command_line(cl),
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        sandbox_info(NULL),
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        autorelease_pool(NULL),
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#elif defined(OS_POSIX) && !defined(OS_ANDROID)
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        zygote_child(false),
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        ui_task(NULL) {
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  const base::CommandLine& command_line;
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sandbox::SandboxInterfaceInfo* sandbox_info;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::mac::ScopedNSAutoreleasePool* autorelease_pool;
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#elif defined(OS_POSIX) && !defined(OS_ANDROID)
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool zygote_child;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used by InProcessBrowserTest. If non-null BrowserMain schedules this
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // task to run on the MessageLoop and BrowserInit is not invoked.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Closure* ui_task;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_PUBLIC_COMMON_MAIN_FUNCTION_PARAMS_H_
60