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

Side by Side Diff: chrome/browser/chromeos/dbus/speech_synthesizer_client.cc

Issue 9838085: Move files inside chrome/browser/chromeos/dbus to chromeos/dbus (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 8 years, 8 months 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 (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/chromeos/dbus/speech_synthesizer_client.h"
6
7 #include "base/bind.h"
8 #include "base/compiler_specific.h"
9 #include "dbus/bus.h"
10 #include "dbus/message.h"
11 #include "dbus/object_path.h"
12 #include "dbus/object_proxy.h"
13 #include "third_party/cros_system_api/dbus/service_constants.h"
14
15 namespace chromeos {
16
17 // TODO(chaitanyag): rename to "locale" after making equivalent change in
18 // Chrome OS code.
19 const char SpeechSynthesizerClient::kSpeechPropertyLocale[] = "name";
20
21 const char SpeechSynthesizerClient::kSpeechPropertyGender[] = "gender";
22 const char SpeechSynthesizerClient::kSpeechPropertyRate[] = "rate";
23 const char SpeechSynthesizerClient::kSpeechPropertyPitch[] = "pitch";
24 const char SpeechSynthesizerClient::kSpeechPropertyVolume[] = "volume";
25 const char SpeechSynthesizerClient::kSpeechPropertyEquals[] = "=";
26 const char SpeechSynthesizerClient::kSpeechPropertyDelimiter[] = ";";
27
28 class SpeechSynthesizerClientImpl : public SpeechSynthesizerClient {
29 public:
30 explicit SpeechSynthesizerClientImpl(dbus::Bus* bus)
31 : proxy_(NULL),
32 weak_ptr_factory_(this) {
33 proxy_ = bus->GetObjectProxy(
34 speech_synthesis::kSpeechSynthesizerServiceName,
35 dbus::ObjectPath(speech_synthesis::kSpeechSynthesizerServicePath));
36 }
37 virtual ~SpeechSynthesizerClientImpl() {}
38
39 virtual void Speak(const std::string& text,
40 const std::string& properties) OVERRIDE {
41 dbus::MethodCall method_call(speech_synthesis::kSpeechSynthesizerInterface,
42 speech_synthesis::kSpeak);
43 dbus::MessageWriter writer(&method_call);
44 writer.AppendString(text);
45 writer.AppendString(properties);
46 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
47 base::Bind(&SpeechSynthesizerClientImpl::OnSpeak,
48 weak_ptr_factory_.GetWeakPtr()));
49 }
50
51 virtual void StopSpeaking() OVERRIDE {
52 dbus::MethodCall method_call(speech_synthesis::kSpeechSynthesizerInterface,
53 speech_synthesis::kStop);
54 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
55 base::Bind(&SpeechSynthesizerClientImpl::OnStopSpeaking,
56 weak_ptr_factory_.GetWeakPtr()));
57 }
58
59 virtual void IsSpeaking(const IsSpeakingCallback& callback) OVERRIDE {
60 dbus::MethodCall method_call(speech_synthesis::kSpeechSynthesizerInterface,
61 speech_synthesis::kIsSpeaking);
62 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
63 base::Bind(&SpeechSynthesizerClientImpl::OnIsSpeaking,
64 weak_ptr_factory_.GetWeakPtr(),
65 callback));
66 }
67
68 private:
69 // Called when a response for Speak() is received
70 void OnSpeak(dbus::Response* response) {
71 if (!response) {
72 LOG(ERROR) << "Failed to speak.";
73 return;
74 }
75 VLOG(1) << "Spoke: " << response->ToString();
76 }
77
78 // Called when a response for StopSpeaking() is received
79 void OnStopSpeaking(dbus::Response* response) {
80 if (!response) {
81 LOG(ERROR) << "Failed to stop speaking.";
82 return;
83 }
84 VLOG(1) << "Stopped speaking: " << response->ToString();
85 }
86
87 // Called when a response for IsSpeaking() is received
88 void OnIsSpeaking(const IsSpeakingCallback& callback,
89 dbus::Response* response) {
90 bool value = false;
91 if (response) {
92 dbus::MessageReader reader(response);
93 reader.PopBool(&value);
94 } else {
95 LOG(ERROR) << "Failed to ask if it is speaking";
96 }
97 callback.Run(value);
98 }
99
100 dbus::ObjectProxy* proxy_;
101 base::WeakPtrFactory<SpeechSynthesizerClientImpl> weak_ptr_factory_;
102
103 DISALLOW_COPY_AND_ASSIGN(SpeechSynthesizerClientImpl);
104 };
105
106 class SpeechSynthesizerClientStubImpl : public SpeechSynthesizerClient {
107 public:
108 SpeechSynthesizerClientStubImpl() {}
109 virtual ~SpeechSynthesizerClientStubImpl() {}
110 virtual void Speak(const std::string& text,
111 const std::string& properties) OVERRIDE {}
112 virtual void StopSpeaking() OVERRIDE {}
113 virtual void IsSpeaking(const IsSpeakingCallback& callback) OVERRIDE {
114 callback.Run(false);
115 }
116
117 private:
118 DISALLOW_COPY_AND_ASSIGN(SpeechSynthesizerClientStubImpl);
119 };
120
121 SpeechSynthesizerClient::SpeechSynthesizerClient() {
122 }
123
124 SpeechSynthesizerClient::~SpeechSynthesizerClient() {
125 }
126
127 // static
128 SpeechSynthesizerClient* SpeechSynthesizerClient::Create(
129 DBusClientImplementationType type,
130 dbus::Bus* bus) {
131 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
132 return new SpeechSynthesizerClientImpl(bus);
133 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
134 return new SpeechSynthesizerClientStubImpl();
135 }
136
137 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/dbus/speech_synthesizer_client.h ('k') | chrome/browser/chromeos/dbus/update_engine_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698