1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/extensions/api/browser/browser_api.h"
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/extensions/extension_tab_util.h"
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace extensions {
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace api {
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)BrowserOpenTabFunction::~BrowserOpenTabFunction() {
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool BrowserOpenTabFunction::RunSync() {
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  scoped_ptr<browser::OpenTab::Params> params(
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      browser::OpenTab::Params::Create(*args_));
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXTENSION_FUNCTION_VALIDATE(params.get());
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ExtensionTabUtil::OpenTabParams options;
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  options.create_browser_if_needed = true;
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  options.url.reset(new std::string(params->options.url));
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  std::string error;
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  scoped_ptr<base::DictionaryValue> result(
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      ExtensionTabUtil::OpenTab(this, options, &error));
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  if (!result) {
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    SetError(error);
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    return false;
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  }
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return true;
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace api
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace extensions
37