| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #import "ios/web/webui/mojo_facade.h" | 5 #import "ios/web/webui/mojo_facade.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include "base/ios/block_types.h" | 9 #include "base/ios/block_types.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| 11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
| 12 #include "base/mac/bind_objc_block.h" | 12 #include "base/mac/bind_objc_block.h" |
| 13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/values.h" | 14 #include "base/values.h" |
| 15 #import "ios/web/public/web_state/js/crw_js_injection_evaluator.h" | 15 #import "ios/web/public/web_state/js/crw_js_injection_evaluator.h" |
| 16 #include "ios/web/public/web_thread.h" | 16 #include "ios/web/public/web_thread.h" |
| 17 #include "mojo/public/cpp/system/core.h" | 17 #include "mojo/public/cpp/system/core.h" |
| 18 #include "services/service_manager/public/interfaces/interface_provider.mojom.h" | 18 #include "services/service_manager/public/interfaces/interface_provider.mojom.h" |
| 19 | 19 |
| 20 #if !defined(__has_feature) || !__has_feature(objc_arc) | 20 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 21 #error "This file requires ARC support." | 21 #error "This file requires ARC support." |
| 22 #endif | 22 #endif |
| 23 | 23 |
| 24 namespace web { | 24 namespace web { |
| 25 | 25 |
| 26 namespace { | 26 namespace { |
| 27 | 27 |
| 28 // Wraps an integer into |base::Value| as |TYPE_INTEGER|. | 28 // Wraps an integer into |base::Value| as |Type::INTEGER|. |
| 29 template <typename IntegerT> | 29 template <typename IntegerT> |
| 30 std::unique_ptr<base::Value> ValueFromInteger(IntegerT handle) { | 30 std::unique_ptr<base::Value> ValueFromInteger(IntegerT handle) { |
| 31 return std::unique_ptr<base::Value>( | 31 return std::unique_ptr<base::Value>( |
| 32 new base::FundamentalValue(static_cast<int>(handle))); | 32 new base::FundamentalValue(static_cast<int>(handle))); |
| 33 } | 33 } |
| 34 | 34 |
| 35 } // namespace | 35 } // namespace |
| 36 | 36 |
| 37 MojoFacade::MojoFacade( | 37 MojoFacade::MojoFacade( |
| 38 service_manager::mojom::InterfaceProvider* interface_provider, | 38 service_manager::mojom::InterfaceProvider* interface_provider, |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 mojo::Handle(handle).Close(); | 129 mojo::Handle(handle).Close(); |
| 130 | 130 |
| 131 return ValueFromInteger(MOJO_RESULT_OK); | 131 return ValueFromInteger(MOJO_RESULT_OK); |
| 132 } | 132 } |
| 133 | 133 |
| 134 std::unique_ptr<base::Value> MojoFacade::HandleCoreCreateMessagePipe( | 134 std::unique_ptr<base::Value> MojoFacade::HandleCoreCreateMessagePipe( |
| 135 base::DictionaryValue* args) { | 135 base::DictionaryValue* args) { |
| 136 const base::Value* options_as_value = nullptr; | 136 const base::Value* options_as_value = nullptr; |
| 137 CHECK(args->Get("optionsDict", &options_as_value)); | 137 CHECK(args->Get("optionsDict", &options_as_value)); |
| 138 | 138 |
| 139 if (options_as_value->IsType(base::Value::TYPE_DICTIONARY)) { | 139 if (options_as_value->IsType(base::Value::Type::DICTIONARY)) { |
| 140 // There are no options defined for CreateMessagePipe yet. | 140 // There are no options defined for CreateMessagePipe yet. |
| 141 const base::DictionaryValue* options_as_dict; | 141 const base::DictionaryValue* options_as_dict; |
| 142 options_as_value->GetAsDictionary(&options_as_dict); | 142 options_as_value->GetAsDictionary(&options_as_dict); |
| 143 CHECK(options_as_dict->empty()); | 143 CHECK(options_as_dict->empty()); |
| 144 } | 144 } |
| 145 | 145 |
| 146 CHECK(options_as_value->IsType(base::Value::TYPE_NULL)); | 146 CHECK(options_as_value->IsType(base::Value::Type::NONE)); |
| 147 | 147 |
| 148 mojo::MessagePipe message_pipe; | 148 mojo::MessagePipe message_pipe; |
| 149 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue); | 149 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue); |
| 150 result->SetInteger("handle0", message_pipe.handle0.release().value()); | 150 result->SetInteger("handle0", message_pipe.handle0.release().value()); |
| 151 result->SetInteger("handle1", message_pipe.handle1.release().value()); | 151 result->SetInteger("handle1", message_pipe.handle1.release().value()); |
| 152 return std::unique_ptr<base::Value>(result.release()); | 152 return std::unique_ptr<base::Value>(result.release()); |
| 153 } | 153 } |
| 154 | 154 |
| 155 std::unique_ptr<base::Value> MojoFacade::HandleCoreWriteMessage( | 155 std::unique_ptr<base::Value> MojoFacade::HandleCoreWriteMessage( |
| 156 base::DictionaryValue* args) { | 156 base::DictionaryValue* args) { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 | 264 |
| 265 std::unique_ptr<base::Value> MojoFacade::HandleSupportCancelWatch( | 265 std::unique_ptr<base::Value> MojoFacade::HandleSupportCancelWatch( |
| 266 const base::DictionaryValue* args) { | 266 const base::DictionaryValue* args) { |
| 267 int watch_id = 0; | 267 int watch_id = 0; |
| 268 CHECK(args->GetInteger("watchId", &watch_id)); | 268 CHECK(args->GetInteger("watchId", &watch_id)); |
| 269 watchers_.erase(watch_id); | 269 watchers_.erase(watch_id); |
| 270 return nullptr; | 270 return nullptr; |
| 271 } | 271 } |
| 272 | 272 |
| 273 } // namespace web | 273 } // namespace web |
| OLD | NEW |