diff options
Diffstat (limited to 'chromium/chrome/browser/ui/webui/settings/chromeos/app_management')
3 files changed, 104 insertions, 0 deletions
diff --git a/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/OWNERS b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/OWNERS new file mode 100644 index 00000000000..94b2e07d850 --- /dev/null +++ b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/OWNERS @@ -0,0 +1,4 @@ +dominickn@chromium.org +jshikaram@chromium.org + +# COMPONENT: Platform>Apps>Foundation diff --git a/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.cc b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.cc new file mode 100644 index 00000000000..8b3abcc9b50 --- /dev/null +++ b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.cc @@ -0,0 +1,55 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.h" + +#include <memory> +#include <utility> + +#include "base/bind.h" +#include "base/feature_list.h" +#include "chrome/browser/apps/app_service/app_icon_source.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/webui/app_management/app_management_page_handler.h" +#include "chrome/grit/browser_resources.h" +#include "chrome/grit/chromium_strings.h" +#include "chrome/grit/generated_resources.h" +#include "components/prefs/pref_service.h" +#include "content/public/browser/url_data_source.h" +#include "content/public/browser/web_ui.h" +#include "content/public/browser/web_ui_data_source.h" +#include "ui/base/resource/resource_bundle.h" + +AppManagementPageHandlerFactory::AppManagementPageHandlerFactory( + Profile* profile) + : page_factory_binding_(this), profile_(profile) {} + +AppManagementPageHandlerFactory::~AppManagementPageHandlerFactory() = default; + +void AppManagementPageHandlerFactory::Bind( + app_management::mojom::PageHandlerFactoryRequest request) { + if (page_factory_binding_.is_bound()) { + page_factory_binding_.Unbind(); + } + + page_factory_binding_.Bind(std::move(request)); +} + +void AppManagementPageHandlerFactory::BindPageHandlerFactory( + app_management::mojom::PageHandlerFactoryRequest request) { + if (page_factory_binding_.is_bound()) { + page_factory_binding_.Unbind(); + } + + page_factory_binding_.Bind(std::move(request)); +} + +void AppManagementPageHandlerFactory::CreatePageHandler( + app_management::mojom::PagePtr page, + app_management::mojom::PageHandlerRequest request) { + DCHECK(page); + + page_handler_ = std::make_unique<AppManagementPageHandler>( + std::move(request), std::move(page), profile_); +} diff --git a/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.h b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.h new file mode 100644 index 00000000000..3779071f093 --- /dev/null +++ b/chromium/chrome/browser/ui/webui/settings/chromeos/app_management/app_management_page_handler_factory.h @@ -0,0 +1,45 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_APP_MANAGEMENT_APP_MANAGEMENT_PAGE_HANDLER_FACTORY_H_ +#define CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_APP_MANAGEMENT_APP_MANAGEMENT_PAGE_HANDLER_FACTORY_H_ + +#include <memory> + +#include "base/macros.h" +#include "chrome/browser/ui/webui/app_management/app_management.mojom.h" +#include "mojo/public/cpp/bindings/binding.h" + +class Profile; + +class AppManagementPageHandler; + +class AppManagementPageHandlerFactory + : public app_management::mojom::PageHandlerFactory { + public: + explicit AppManagementPageHandlerFactory(Profile* profile); + ~AppManagementPageHandlerFactory() override; + + void Bind(app_management::mojom::PageHandlerFactoryRequest request); + + private: + void BindPageHandlerFactory( + app_management::mojom::PageHandlerFactoryRequest request); + + // app_management::mojom::PageHandlerFactory: + void CreatePageHandler( + app_management::mojom::PagePtr page, + app_management::mojom::PageHandlerRequest request) override; + + std::unique_ptr<AppManagementPageHandler> page_handler_; + + mojo::Binding<app_management::mojom::PageHandlerFactory> + page_factory_binding_; + + Profile* profile_; + + DISALLOW_COPY_AND_ASSIGN(AppManagementPageHandlerFactory); +}; + +#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_CHROMEOS_APP_MANAGEMENT_APP_MANAGEMENT_PAGE_HANDLER_FACTORY_H_ |