summaryrefslogtreecommitdiffstats
path: root/chrome_frame/chrome_launcher.h
blob: da2540e3def7e5c200acd6d5758c4ec054fbb75e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_FRAME_CHROME_LAUNCHER_H_
#define CHROME_FRAME_CHROME_LAUNCHER_H_

#include <string>

// arraysize macro shamelessly stolen from base\basictypes.h
template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];

#define arraysize(array) (sizeof(ArraySizeHelper(array)))

namespace chrome_launcher {

// The base name of the chrome_launcher.exe file.
extern const wchar_t kLauncherExeBaseName[];

// Returns true if command_line contains only flags that we allow through.
// Returns false if command_line contains any unrecognized flags.
bool IsValidCommandLine(const wchar_t* command_line);

// Given a command-line without an initial program part, launch our associated
// chrome.exe with a sanitized version of that command line. Returns true iff
// successful.
bool SanitizeAndLaunchChrome(const wchar_t* command_line);

// Returns a pointer to the position in command_line the string right after the
// name of the executable. This is equivalent to the second element of the
// array returned by CommandLineToArgvW. Returns NULL if there are no further
// arguments.
const wchar_t* GetArgumentsStart(const wchar_t* command_line);

// Returns the full path to the Chrome executable.
bool GetChromeExecutablePath(std::wstring* chrome_path);

// Returns whether a given argument is considered a valid flag. Only accepts
// flags of the forms:
//   --foo
//   --foo=bar
bool IsValidArgument(const std::wstring& argument);

// Returns a string that is equivalent in input_str without any leading
// or trailing whitespace. Returns an empty string if input_str contained only
// whitespace.
std::wstring TrimWhiteSpace(const wchar_t* input_str);

}  // namespace chrome_launcher

#endif  // CHROME_FRAME_CHROME_LAUNCHER_H_