// Copyright 2015 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. #include "chrome/browser/ui/omnibox/clipboard_utils.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "components/omnibox/browser/omnibox_view.h" #include "ui/base/clipboard/clipboard.h" base::string16 GetClipboardText() { // Try text format. ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread(); if (clipboard->IsFormatAvailable(ui::Clipboard::GetPlainTextWFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE)) { base::string16 text; clipboard->ReadText(ui::CLIPBOARD_TYPE_COPY_PASTE, &text); return OmniboxView::SanitizeTextForPaste(text); } // Try bookmark format. // // It is tempting to try bookmark format first, but the URL we get out of a // bookmark has been cannonicalized via GURL. This means if a user copies // and pastes from the URL bar to itself, the text will get fixed up and // cannonicalized, which is not what the user expects. By pasting in this // order, we are sure to paste what the user copied. if (clipboard->IsFormatAvailable(ui::Clipboard::GetUrlWFormatType(), ui::CLIPBOARD_TYPE_COPY_PASTE)) { std::string url_str; clipboard->ReadBookmark(NULL, &url_str); // pass resulting url string through GURL to normalize GURL url(url_str); if (url.is_valid()) return OmniboxView::StripJavascriptSchemas(base::UTF8ToUTF16(url.spec())); } return base::string16(); }