OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/terminal/terminal_private_api.h" | 5 #include "chrome/browser/extensions/api/terminal/terminal_private_api.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 const std::string& output_type, | 60 const std::string& output_type, |
61 const std::string& output) { | 61 const std::string& output) { |
62 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { | 62 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { |
63 content::BrowserThread::PostTask( | 63 content::BrowserThread::PostTask( |
64 content::BrowserThread::UI, FROM_HERE, | 64 content::BrowserThread::UI, FROM_HERE, |
65 base::Bind(&NotifyProcessOutput, browser_context, extension_id, tab_id, | 65 base::Bind(&NotifyProcessOutput, browser_context, extension_id, tab_id, |
66 terminal_id, output_type, output)); | 66 terminal_id, output_type, output)); |
67 return; | 67 return; |
68 } | 68 } |
69 | 69 |
70 scoped_ptr<base::ListValue> args(new base::ListValue()); | 70 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
71 args->Append(new base::FundamentalValue(tab_id)); | 71 args->Append(new base::FundamentalValue(tab_id)); |
72 args->Append(new base::FundamentalValue(terminal_id)); | 72 args->Append(new base::FundamentalValue(terminal_id)); |
73 args->Append(new base::StringValue(output_type)); | 73 args->Append(new base::StringValue(output_type)); |
74 args->Append(new base::StringValue(output)); | 74 args->Append(new base::StringValue(output)); |
75 | 75 |
76 extensions::EventRouter* event_router = | 76 extensions::EventRouter* event_router = |
77 extensions::EventRouter::Get(browser_context); | 77 extensions::EventRouter::Get(browser_context); |
78 if (event_router) { | 78 if (event_router) { |
79 scoped_ptr<extensions::Event> event(new extensions::Event( | 79 std::unique_ptr<extensions::Event> event(new extensions::Event( |
80 extensions::events::TERMINAL_PRIVATE_ON_PROCESS_OUTPUT, | 80 extensions::events::TERMINAL_PRIVATE_ON_PROCESS_OUTPUT, |
81 terminal_private::OnProcessOutput::kEventName, std::move(args))); | 81 terminal_private::OnProcessOutput::kEventName, std::move(args))); |
82 event_router->DispatchEventToExtension(extension_id, std::move(event)); | 82 event_router->DispatchEventToExtension(extension_id, std::move(event)); |
83 } | 83 } |
84 } | 84 } |
85 | 85 |
86 // Returns tab ID, or window session ID (for platform apps) for |web_contents|. | 86 // Returns tab ID, or window session ID (for platform apps) for |web_contents|. |
87 int GetTabOrWindowSessionId(content::BrowserContext* browser_context, | 87 int GetTabOrWindowSessionId(content::BrowserContext* browser_context, |
88 content::WebContents* web_contents) { | 88 content::WebContents* web_contents) { |
89 int tab_id = extensions::ExtensionTabUtil::GetTabId(web_contents); | 89 int tab_id = extensions::ExtensionTabUtil::GetTabId(web_contents); |
(...skipping 10 matching lines...) Expand all Loading... |
100 namespace extensions { | 100 namespace extensions { |
101 | 101 |
102 TerminalPrivateOpenTerminalProcessFunction:: | 102 TerminalPrivateOpenTerminalProcessFunction:: |
103 TerminalPrivateOpenTerminalProcessFunction() : command_(NULL) {} | 103 TerminalPrivateOpenTerminalProcessFunction() : command_(NULL) {} |
104 | 104 |
105 TerminalPrivateOpenTerminalProcessFunction:: | 105 TerminalPrivateOpenTerminalProcessFunction:: |
106 ~TerminalPrivateOpenTerminalProcessFunction() {} | 106 ~TerminalPrivateOpenTerminalProcessFunction() {} |
107 | 107 |
108 ExtensionFunction::ResponseAction | 108 ExtensionFunction::ResponseAction |
109 TerminalPrivateOpenTerminalProcessFunction::Run() { | 109 TerminalPrivateOpenTerminalProcessFunction::Run() { |
110 scoped_ptr<OpenTerminalProcess::Params> params( | 110 std::unique_ptr<OpenTerminalProcess::Params> params( |
111 OpenTerminalProcess::Params::Create(*args_)); | 111 OpenTerminalProcess::Params::Create(*args_)); |
112 EXTENSION_FUNCTION_VALIDATE(params.get()); | 112 EXTENSION_FUNCTION_VALIDATE(params.get()); |
113 | 113 |
114 command_ = GetProcessCommandForName(params->process_name); | 114 command_ = GetProcessCommandForName(params->process_name); |
115 if (!command_) | 115 if (!command_) |
116 return RespondNow(Error("Invalid process name.")); | 116 return RespondNow(Error("Invalid process name.")); |
117 | 117 |
118 content::WebContents* caller_contents = GetSenderWebContents(); | 118 content::WebContents* caller_contents = GetSenderWebContents(); |
119 if (!caller_contents) | 119 if (!caller_contents) |
120 return RespondNow(Error("No web contents.")); | 120 return RespondNow(Error("No web contents.")); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 if (terminal_id < 0) { | 167 if (terminal_id < 0) { |
168 SetError("Failed to open process."); | 168 SetError("Failed to open process."); |
169 SendResponse(false); | 169 SendResponse(false); |
170 return; | 170 return; |
171 } | 171 } |
172 SetResult(new base::FundamentalValue(terminal_id)); | 172 SetResult(new base::FundamentalValue(terminal_id)); |
173 SendResponse(true); | 173 SendResponse(true); |
174 } | 174 } |
175 | 175 |
176 ExtensionFunction::ResponseAction TerminalPrivateSendInputFunction::Run() { | 176 ExtensionFunction::ResponseAction TerminalPrivateSendInputFunction::Run() { |
177 scoped_ptr<SendInput::Params> params(SendInput::Params::Create(*args_)); | 177 std::unique_ptr<SendInput::Params> params(SendInput::Params::Create(*args_)); |
178 EXTENSION_FUNCTION_VALIDATE(params.get()); | 178 EXTENSION_FUNCTION_VALIDATE(params.get()); |
179 | 179 |
180 // Registry lives on the FILE thread. | 180 // Registry lives on the FILE thread. |
181 content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE, | 181 content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE, |
182 base::Bind(&TerminalPrivateSendInputFunction::SendInputOnFileThread, | 182 base::Bind(&TerminalPrivateSendInputFunction::SendInputOnFileThread, |
183 this, params->pid, params->input)); | 183 this, params->pid, params->input)); |
184 return RespondLater(); | 184 return RespondLater(); |
185 } | 185 } |
186 | 186 |
187 void TerminalPrivateSendInputFunction::SendInputOnFileThread( | 187 void TerminalPrivateSendInputFunction::SendInputOnFileThread( |
(...skipping 11 matching lines...) Expand all Loading... |
199 void TerminalPrivateSendInputFunction::RespondOnUIThread(bool success) { | 199 void TerminalPrivateSendInputFunction::RespondOnUIThread(bool success) { |
200 SetResult(new base::FundamentalValue(success)); | 200 SetResult(new base::FundamentalValue(success)); |
201 SendResponse(true); | 201 SendResponse(true); |
202 } | 202 } |
203 | 203 |
204 TerminalPrivateCloseTerminalProcessFunction:: | 204 TerminalPrivateCloseTerminalProcessFunction:: |
205 ~TerminalPrivateCloseTerminalProcessFunction() {} | 205 ~TerminalPrivateCloseTerminalProcessFunction() {} |
206 | 206 |
207 ExtensionFunction::ResponseAction | 207 ExtensionFunction::ResponseAction |
208 TerminalPrivateCloseTerminalProcessFunction::Run() { | 208 TerminalPrivateCloseTerminalProcessFunction::Run() { |
209 scoped_ptr<CloseTerminalProcess::Params> params( | 209 std::unique_ptr<CloseTerminalProcess::Params> params( |
210 CloseTerminalProcess::Params::Create(*args_)); | 210 CloseTerminalProcess::Params::Create(*args_)); |
211 EXTENSION_FUNCTION_VALIDATE(params.get()); | 211 EXTENSION_FUNCTION_VALIDATE(params.get()); |
212 | 212 |
213 // Registry lives on the FILE thread. | 213 // Registry lives on the FILE thread. |
214 content::BrowserThread::PostTask( | 214 content::BrowserThread::PostTask( |
215 content::BrowserThread::FILE, FROM_HERE, | 215 content::BrowserThread::FILE, FROM_HERE, |
216 base::Bind( | 216 base::Bind( |
217 &TerminalPrivateCloseTerminalProcessFunction::CloseOnFileThread, this, | 217 &TerminalPrivateCloseTerminalProcessFunction::CloseOnFileThread, this, |
218 params->pid)); | 218 params->pid)); |
219 | 219 |
(...skipping 14 matching lines...) Expand all Loading... |
234 bool success) { | 234 bool success) { |
235 SetResult(new base::FundamentalValue(success)); | 235 SetResult(new base::FundamentalValue(success)); |
236 SendResponse(true); | 236 SendResponse(true); |
237 } | 237 } |
238 | 238 |
239 TerminalPrivateOnTerminalResizeFunction:: | 239 TerminalPrivateOnTerminalResizeFunction:: |
240 ~TerminalPrivateOnTerminalResizeFunction() {} | 240 ~TerminalPrivateOnTerminalResizeFunction() {} |
241 | 241 |
242 ExtensionFunction::ResponseAction | 242 ExtensionFunction::ResponseAction |
243 TerminalPrivateOnTerminalResizeFunction::Run() { | 243 TerminalPrivateOnTerminalResizeFunction::Run() { |
244 scoped_ptr<OnTerminalResize::Params> params( | 244 std::unique_ptr<OnTerminalResize::Params> params( |
245 OnTerminalResize::Params::Create(*args_)); | 245 OnTerminalResize::Params::Create(*args_)); |
246 EXTENSION_FUNCTION_VALIDATE(params.get()); | 246 EXTENSION_FUNCTION_VALIDATE(params.get()); |
247 | 247 |
248 // Registry lives on the FILE thread. | 248 // Registry lives on the FILE thread. |
249 content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE, | 249 content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE, |
250 base::Bind(&TerminalPrivateOnTerminalResizeFunction::OnResizeOnFileThread, | 250 base::Bind(&TerminalPrivateOnTerminalResizeFunction::OnResizeOnFileThread, |
251 this, params->pid, params->width, params->height)); | 251 this, params->pid, params->width, params->height)); |
252 | 252 |
253 return RespondLater(); | 253 return RespondLater(); |
254 } | 254 } |
(...skipping 11 matching lines...) Expand all Loading... |
266 } | 266 } |
267 | 267 |
268 void TerminalPrivateOnTerminalResizeFunction::RespondOnUIThread(bool success) { | 268 void TerminalPrivateOnTerminalResizeFunction::RespondOnUIThread(bool success) { |
269 SetResult(new base::FundamentalValue(success)); | 269 SetResult(new base::FundamentalValue(success)); |
270 SendResponse(true); | 270 SendResponse(true); |
271 } | 271 } |
272 | 272 |
273 TerminalPrivateAckOutputFunction::~TerminalPrivateAckOutputFunction() {} | 273 TerminalPrivateAckOutputFunction::~TerminalPrivateAckOutputFunction() {} |
274 | 274 |
275 ExtensionFunction::ResponseAction TerminalPrivateAckOutputFunction::Run() { | 275 ExtensionFunction::ResponseAction TerminalPrivateAckOutputFunction::Run() { |
276 scoped_ptr<AckOutput::Params> params(AckOutput::Params::Create(*args_)); | 276 std::unique_ptr<AckOutput::Params> params(AckOutput::Params::Create(*args_)); |
277 EXTENSION_FUNCTION_VALIDATE(params.get()); | 277 EXTENSION_FUNCTION_VALIDATE(params.get()); |
278 | 278 |
279 content::WebContents* caller_contents = GetSenderWebContents(); | 279 content::WebContents* caller_contents = GetSenderWebContents(); |
280 if (!caller_contents) | 280 if (!caller_contents) |
281 return RespondNow(Error("No web contents.")); | 281 return RespondNow(Error("No web contents.")); |
282 | 282 |
283 int tab_id = GetTabOrWindowSessionId(browser_context(), caller_contents); | 283 int tab_id = GetTabOrWindowSessionId(browser_context(), caller_contents); |
284 if (tab_id < 0) | 284 if (tab_id < 0) |
285 return RespondNow(Error("Not called from a tab or app window")); | 285 return RespondNow(Error("Not called from a tab or app window")); |
286 | 286 |
287 if (tab_id != params->tab_id) | 287 if (tab_id != params->tab_id) |
288 return RespondNow(NoArguments()); | 288 return RespondNow(NoArguments()); |
289 | 289 |
290 // Registry lives on the FILE thread. | 290 // Registry lives on the FILE thread. |
291 content::BrowserThread::PostTask( | 291 content::BrowserThread::PostTask( |
292 content::BrowserThread::FILE, FROM_HERE, | 292 content::BrowserThread::FILE, FROM_HERE, |
293 base::Bind(&TerminalPrivateAckOutputFunction::AckOutputOnFileThread, this, | 293 base::Bind(&TerminalPrivateAckOutputFunction::AckOutputOnFileThread, this, |
294 params->pid)); | 294 params->pid)); |
295 | 295 |
296 return RespondNow(NoArguments()); | 296 return RespondNow(NoArguments()); |
297 } | 297 } |
298 | 298 |
299 void TerminalPrivateAckOutputFunction::AckOutputOnFileThread(int terminal_id) { | 299 void TerminalPrivateAckOutputFunction::AckOutputOnFileThread(int terminal_id) { |
300 chromeos::ProcessProxyRegistry::Get()->AckOutput(terminal_id); | 300 chromeos::ProcessProxyRegistry::Get()->AckOutput(terminal_id); |
301 } | 301 } |
302 | 302 |
303 } // namespace extensions | 303 } // namespace extensions |
OLD | NEW |