1// Copyright (c) 2012 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/platform_util.h"
6
7#include "chrome/browser/chromeos/file_manager/open_util.h"
8#include "chrome/browser/ui/browser_navigator.h"
9#include "content/public/browser/browser_thread.h"
10#include "url/gurl.h"
11
12using content::BrowserThread;
13
14namespace {
15
16const char kGmailComposeUrl[] =
17    "https://mail.google.com/mail/?extsrc=mailto&url=";
18
19}  // namespace
20
21namespace platform_util {
22
23void ShowItemInFolder(Profile* profile, const base::FilePath& full_path) {
24  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
25  file_manager::util::ShowItemInFolder(profile, full_path);
26}
27
28void OpenItem(Profile* profile, const base::FilePath& full_path) {
29  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
30  file_manager::util::OpenItem(profile, full_path);
31}
32
33void OpenExternal(Profile* profile, const GURL& url) {
34  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
35
36  // This code should be obsolete since we have default handlers in ChromeOS
37  // which should handle this. However - there are two things which make it
38  // necessary to keep it in:
39  // a.) The user might have deleted the default handler in this session.
40  //     In this case we would need to have this in place.
41  // b.) There are several code paths which are not clear if they would call
42  //     this function directly and which would therefore break (e.g.
43  //     "Browser::EmailPageLocation" (to name only one).
44  // As such we should keep this code here.
45  chrome::NavigateParams params(profile, url, ui::PAGE_TRANSITION_LINK);
46  params.disposition = NEW_FOREGROUND_TAB;
47  params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH;
48
49  if (url.SchemeIs("mailto")) {
50    std::string string_url = kGmailComposeUrl;
51    string_url.append(url.spec());
52    params.url = GURL(url);
53  }
54
55  chrome::Navigate(&params);
56}
57
58}  // namespace platform_util
59