Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // This file is generated | |
| 2 | |
| 3 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 4 // Use of this source code is governed by a BSD-style license that can be | |
| 5 // found in the LICENSE file. | |
| 6 | |
| 7 #include "headless/public/domains/{{domain.domain | camelcase_to_hacker_style}}. h" | |
| 8 | |
| 9 #include "base/bind.h" | |
| 10 | |
| 11 namespace headless { | |
| 12 | |
| 13 namespace {{domain.domain | camelcase_to_hacker_style}} { | |
| 14 | |
| 15 Domain::Domain(internal::MessageDispatcher* dispatcher) : dispatcher_(dispatcher ) {} | |
| 16 | |
| 17 Domain::~Domain() {} | |
| 18 {% for command in domain.commands %} | |
| 19 {# Skip redirected commands. #} | |
| 20 {% if "redirect" in command %}{% continue %}{% endif %} | |
| 21 | |
| 22 {% set method_name = command.name | to_title_case %} | |
| 23 {% if "parameters" in command and "returns" in command %} | |
| 24 void Domain::{{method_name}}(std::unique_ptr<{{method_name}}Params> params, base ::Callback<void(std::unique_ptr<{{method_name}}Result>)> callback) { | |
| 25 dispatcher_->SendMessage("{{domain.domain}}.{{command.name}}", params->Seriali ze(), base::Bind(&Domain::Handle{{method_name}}Response, callback)); | |
| 26 {% elif "parameters" in command %} | |
| 27 void Domain::{{method_name}}(std::unique_ptr<{{method_name}}Params> params, base ::Callback<void()> callback) { | |
| 28 dispatcher_->SendMessage("{{domain.domain}}.{{command.name}}", params->Seriali ze(), std::move(callback)); | |
| 29 {% elif "returns" in command %} | |
| 30 void Domain::{{method_name}}(base::Callback<void(std::unique_ptr<{{method_name}} Result>)> callback) { | |
| 31 dispatcher_->SendMessage("{{domain.domain}}.{{command.name}}", base::Bind(&Dom ain::Handle{{method_name}}Response, callback)); | |
| 32 {% else %} | |
| 33 void Domain::{{method_name}}(base::Callback<void()> callback) { | |
| 34 dispatcher_->SendMessage("{{domain.domain}}.{{command.name}}", std::move(callb ack)); | |
| 35 {% endif %} | |
| 36 } | |
| 37 {% endfor %} | |
| 38 | |
| 39 {# Generate response handlers for commands that need them. #} | |
| 40 {% for command in domain.commands %} | |
| 41 {% if not "returns" in command %}{% continue %}{% endif %} | |
| 42 {% set method_name = command.name | to_title_case %} | |
| 43 | |
| 44 // static | |
| 45 void Domain::Handle{{method_name}}Response(base::Callback<void(std::unique_ptr<{ {method_name}}Result>)> callback, const base::Value& response) { | |
| 46 if (callback.Equals(base::Callback<void(std::unique_ptr<{{method_name}}Result> )>())) | |
|
dgozman
2016/04/14 18:01:54
There is is_null() method on Callback.
Sami
2016/04/15 14:43:44
Thanks, I looked but completely missed that.
| |
| 47 return; | |
| 48 ErrorReporter errors; | |
| 49 std::unique_ptr<{{method_name}}Result> result = {{method_name}}Result::Parse(r esponse, &errors); | |
| 50 DCHECK(!errors.HasErrors()); | |
| 51 callback.Run(std::move(result)); | |
| 52 } | |
| 53 {% endfor %} | |
| 54 | |
| 55 } // namespace {{domain.domain | camelcase_to_hacker_style}} | |
| 56 | |
| 57 } // namespace headless | |
| OLD | NEW |