Skip to content

Commit

Permalink
[CodeHealth] Deprecate WebUIIOS::MessageCallback
Browse files Browse the repository at this point in the history
Current WebUIIOS::MessageCallback is taking base::Value::ConstListView,
with changed plans around base::Value refactoring it should be
const base::Value::List& instead.

This CL renames it to WebUIIOS::DeprecatedMessageCallback2,
RegisterMessageCallback() will be renamed in the follow up CL and new
version introduced afterwards.

Note: regular WebUI version of this CL - https://crrev.com/c/3484119.

Bug: 1300095
Change-Id: I39e98be6d78ddf0e2081a839d4935dca83dd3a2b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3484679
Reviewed-by: Mike Dougherty <michaeldo@chromium.org>
Commit-Queue: Maksim Moskvitin <mmoskvitin@google.com>
Cr-Commit-Position: refs/heads/main@{#974942}
  • Loading branch information
Maksim Moskvitin authored and Chromium LUCI CQ committed Feb 25, 2022
1 parent f91f62f commit dc22e18
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 25 deletions.
19 changes: 12 additions & 7 deletions ios/web/public/webui/web_ui_ios.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,23 @@ class WebUIIOS {
virtual void AddMessageHandler(
std::unique_ptr<WebUIIOSMessageHandler> handler) = 0;

// TODO(crbug.com/1300095): new version of DeprecatedMessageCallback2 that
// takes base::Value::List as a parameter needs to be introduced. Afterwards
// existing callers of RegisterDeprecatedMessageCallback() should be migrated
// to the new RegisterMessageCallback() (not the one below) version.
//
// Used by WebUIIOSMessageHandlers. If the given message is already
// registered, the call has no effect.
using MessageCallback =
using DeprecatedMessageCallback2 =
base::RepeatingCallback<void(base::Value::ConstListView)>;
virtual void RegisterMessageCallback(const std::string& message,
MessageCallback callback) = 0;
DeprecatedMessageCallback2 callback) = 0;

// Always use RegisterMessageCallback() above in new code.
//
// TODO(crbug.com/1243386): Existing callers of
// RegisterDeprecatedMessageCallback() should be migrated to
// RegisterMessageCallback() if possible.
// TODO(crbug.com/1300095): new version of DeprecatedMessageCallback that
// takes base::Value::List as a parameter needs to be introduced. Afterwards
// existing callers of RegisterDeprecatedMessageCallback() should be migrated
// to the new RegisterMessageCallback() (not the one above) version if
// possible.
//
// Used by WebUIIOSMessageHandlers. If the given message is already
// registered, the call has no effect.
Expand Down
11 changes: 4 additions & 7 deletions ios/web/webui/web_ui_ios_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,8 @@ class WebUIIOSImpl : public web::WebUIIOS,
void SetController(std::unique_ptr<WebUIIOSController> controller) override;
void AddMessageHandler(
std::unique_ptr<WebUIIOSMessageHandler> handler) override;
using MessageCallback =
base::RepeatingCallback<void(base::Value::ConstListView)>;
void RegisterMessageCallback(const std::string& message,
MessageCallback callback) override;
using DeprecatedMessageCallback =
base::RepeatingCallback<void(const base::ListValue*)>;
DeprecatedMessageCallback2 callback) override;
void RegisterDeprecatedMessageCallback(
const std::string& message,
const DeprecatedMessageCallback& callback) override;
Expand All @@ -69,8 +65,9 @@ class WebUIIOSImpl : public web::WebUIIOS,
void ExecuteJavascript(const std::u16string& javascript);

// A map of message name -> message handling callback.
using MessageCallbackMap = std::map<std::string, MessageCallback>;
MessageCallbackMap message_callbacks_;
using DeprecatedMessageCallback2Map =
std::map<std::string, DeprecatedMessageCallback2>;
DeprecatedMessageCallback2Map deprecated_message_callbacks_2_;

// A map of message name -> message handling callback.
using DeprecatedMessageCallbackMap =
Expand Down
24 changes: 13 additions & 11 deletions ios/web/webui/web_ui_ios_impl.mm
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,10 @@
GetJavascriptCall("cr.webUIListenerCallback", modified_args));
}

void WebUIIOSImpl::RegisterMessageCallback(const std::string& message,
MessageCallback callback) {
message_callbacks_.emplace(message, std::move(callback));
void WebUIIOSImpl::RegisterMessageCallback(
const std::string& message,
DeprecatedMessageCallback2 callback) {
deprecated_message_callbacks_2_.emplace(message, std::move(callback));
}

void WebUIIOSImpl::RegisterDeprecatedMessageCallback(
Expand Down Expand Up @@ -153,19 +154,20 @@
return;

// Look up the callback for this message.
MessageCallbackMap::const_iterator callback =
message_callbacks_.find(message);
if (callback != message_callbacks_.end()) {
auto deprecated_message_callback_2_it =
deprecated_message_callbacks_2_.find(message);
if (deprecated_message_callback_2_it !=
deprecated_message_callbacks_2_.end()) {
// Forward this message and content on.
callback->second.Run(args.GetListDeprecated());
deprecated_message_callback_2_it->second.Run(args.GetListDeprecated());
return;
}

// Look up the deprecated callback for this message.
DeprecatedMessageCallbackMap::const_iterator deprecated_callback =
deprecated_message_callbacks_.find(message);
if (deprecated_callback != deprecated_message_callbacks_.end()) {
auto deprecated_callback_it = deprecated_message_callbacks_.find(message);
if (deprecated_callback_it != deprecated_message_callbacks_.end()) {
// Forward this message and content on.
deprecated_callback->second.Run(&base::Value::AsListValue(args));
deprecated_callback_it->second.Run(&base::Value::AsListValue(args));
}
}

Expand Down

0 comments on commit dc22e18

Please sign in to comment.