1 // Copyright 2015 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 "ios/chrome/browser/ui/webui/version_handler.h"
6 
7 #include "base/bind.h"
8 #include "base/callback_helpers.h"
9 #include "base/values.h"
10 #include "components/version_ui/version_handler_helper.h"
11 #include "components/version_ui/version_ui_constants.h"
12 #include "ios/web/public/webui/web_ui_ios.h"
13 #include "ui/base/l10n/l10n_util.h"
14 
VersionHandler()15 VersionHandler::VersionHandler() {}
16 
~VersionHandler()17 VersionHandler::~VersionHandler() {}
18 
RegisterMessages()19 void VersionHandler::RegisterMessages() {
20   web_ui()->RegisterMessageCallback(
21       version_ui::kRequestVariationInfo,
22       base::BindRepeating(&VersionHandler::HandleRequestVariationInfo,
23                           base::Unretained(this)));
24 }
25 
HandleRequestVariationInfo(const base::ListValue * args)26 void VersionHandler::HandleRequestVariationInfo(const base::ListValue* args) {
27   // Respond with the variations info immediately.
28   std::string callback_id;
29   CHECK_EQ(2U, args->GetSize());
30   CHECK(args->GetString(0, &callback_id));
31 
32   base::Value response(base::Value::Type::DICTIONARY);
33   response.SetKey(version_ui::kKeyVariationsList,
34                   std::move(*version_ui::GetVariationsList()));
35   web_ui()->ResolveJavascriptCallback(base::Value(callback_id), response);
36 }
37