command_line_private_api.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/extensions/api/command_line_private/command_line_private_api.h"
6
7#include <string>
8
9#include "base/command_line.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/values.h"
12#include "chrome/common/extensions/api/command_line_private.h"
13
14namespace {
15// This should be consistent with
16// chrome/test/data/extensions/api_test/command_line/basics/test.js.
17const char kEmptySwitchName[] = "Switch name is empty.";
18}  // namespace
19
20namespace extensions {
21
22namespace command_line_private = api::command_line_private;
23
24bool CommandLinePrivateHasSwitchFunction::RunSync() {
25  scoped_ptr<command_line_private::HasSwitch::Params> params(
26      command_line_private::HasSwitch::Params::Create(*args_));
27  EXTENSION_FUNCTION_VALIDATE(params);
28
29  if (params->name.empty()) {
30    error_ = kEmptySwitchName;
31    return false;
32  }
33
34  results_ = command_line_private::HasSwitch::Results::Create(
35      CommandLine::ForCurrentProcess()->HasSwitch(params->name));
36  return true;
37}
38
39}  // namespace extensions
40