1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/net/browser_url_util.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/utf_string_conversions.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/url_constants.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "googleurl/src/gurl.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/net_util.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/clipboard/scoped_clipboard_writer.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chrome_browser_net { 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WriteURLToClipboard(const GURL& url, 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const std::string& languages, 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ui::Clipboard *clipboard) { 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (url.is_empty() || !url.is_valid() || !clipboard) 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return; 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Unescaping path and query is not a good idea because other applications 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // may not encode non-ASCII characters in UTF-8. See crbug.com/2820. 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 text = url.SchemeIs(chrome::kMailToScheme) ? 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASCIIToUTF16(url.path()) : 263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick net::FormatUrl(url, languages, net::kFormatUrlOmitNothing, 273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UnescapeRule::NONE, NULL, NULL, NULL); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ui::ScopedClipboardWriter scw(clipboard); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scw.WriteURL(text); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chrome_browser_net 34