Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1634)

Side by Side Diff: chrome/browser/chromeos/arc/clipboard/arc_clipboard_manager.cc

Issue 1495723004: Minimum implementation of ARC clipboard Bridge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased to catch arc++ notification cl Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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/chromeos/arc/clipboard/arc_clipboard_manager.h"
6
7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "ui/base/clipboard/clipboard.h"
10 #include "ui/base/clipboard/clipboard_types.h"
11 #include "ui/base/clipboard/scoped_clipboard_writer.h"
12
13 namespace chromeos {
14
15 ArcClipboardManager::ArcClipboardManager() {
16 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get();
jochen (gone - plz use gerrit) 2015/12/07 15:45:09 please make this a ctor parameter so it can be moc
17 if (!bridge_service) {
18 LOG(ERROR) << "Bridge service is not available. Cannot initialize.";
jochen (gone - plz use gerrit) 2015/12/07 15:45:09 can this ever occur? if yes, how will the user be
19 return;
20 }
21
22 bridge_service->AddObserver(this);
23 bridge_service->AddClipboardObserver(this);
24 }
25
26 ArcClipboardManager::~ArcClipboardManager() {
27 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get();
28 if (bridge_service) {
29 bridge_service->RemoveClipboardObserver(this);
30 bridge_service->RemoveObserver(this);
31 }
32 }
33
34 void ArcClipboardManager::OnSetClipboardContent(
35 const arc::ClipboardData& data) {
36 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get();
elijahtaylor1 2015/12/04 20:36:51 you don't need bridge_service below, so you could
jochen (gone - plz use gerrit) 2015/12/07 15:45:09 also, you should just store the service as a membe
37 if (!bridge_service) {
38 LOG(ERROR) << "Request to set clipboard content when bridge service is"
39 << " not ready.";
40 return;
41 }
42
43 ui::ScopedClipboardWriter writer(ui::CLIPBOARD_TYPE_COPY_PASTE);
44 writer.WriteText(base::UTF8ToUTF16(data.text));
45 }
46
47 void ArcClipboardManager::OnGetClipboardContent() {
48 arc::ArcBridgeService* bridge_service = arc::ArcBridgeService::Get();
49 if (!bridge_service) {
elijahtaylor1 2015/12/04 20:36:51 maybe a CHECK? This method should only be called
50 LOG(ERROR) << "Request to get clipboard content when bridge service is"
51 << " not ready.";
52 return;
53 }
54
55 base::string16 text;
56 ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
57 clipboard->ReadText(ui::CLIPBOARD_TYPE_COPY_PASTE, &text);
58
59 arc::ClipboardData result;
60 result.type = arc::ClipboardDataType::TEXT;
61 result.text = base::UTF16ToUTF8(text);
62 bridge_service->SendClipboardContentToAndroid(result);
63 }
64
65 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698