Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1283)

Unified Diff: mojo/services/html_viewer/html_viewer.cc

Issue 1099303002: Move html_viewer from mojo/services to components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/services/html_viewer/html_document.cc ('k') | mojo/services/html_viewer/html_viewer_version.rc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/services/html_viewer/html_viewer.cc
diff --git a/mojo/services/html_viewer/html_viewer.cc b/mojo/services/html_viewer/html_viewer.cc
deleted file mode 100644
index 3e6f6269152033367503b62331d70cf1443b980b..0000000000000000000000000000000000000000
--- a/mojo/services/html_viewer/html_viewer.cc
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2014 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 "base/command_line.h"
-#include "base/i18n/icu_util.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread.h"
-#include "gin/v8_initializer.h"
-#include "mojo/application/application_runner_chromium.h"
-#include "mojo/services/html_viewer/blink_platform_impl.h"
-#include "mojo/services/html_viewer/discardable_memory_allocator.h"
-#include "mojo/services/html_viewer/html_document.h"
-#include "mojo/services/html_viewer/web_media_player_factory.h"
-#include "mojo/services/network/public/interfaces/network_service.mojom.h"
-#include "third_party/WebKit/public/web/WebKit.h"
-#include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
-#include "third_party/mojo/src/mojo/public/c/system/main.h"
-#include "third_party/mojo/src/mojo/public/cpp/application/application_connection.h"
-#include "third_party/mojo/src/mojo/public/cpp/application/application_delegate.h"
-#include "third_party/mojo/src/mojo/public/cpp/application/application_impl.h"
-#include "third_party/mojo/src/mojo/public/cpp/application/connect.h"
-#include "third_party/mojo/src/mojo/public/cpp/application/interface_factory_impl.h"
-#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"
-#include "third_party/mojo_services/src/content_handler/public/interfaces/content_handler.mojom.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/ui_base_paths.h"
-
-using mojo::ApplicationConnection;
-using mojo::Array;
-using mojo::BindToRequest;
-using mojo::ContentHandler;
-using mojo::InterfaceRequest;
-using mojo::ServiceProvider;
-using mojo::ServiceProviderPtr;
-using mojo::ShellPtr;
-using mojo::String;
-using mojo::URLLoaderPtr;
-using mojo::URLResponsePtr;
-
-namespace html_viewer {
-
-// Switches for html_viewer.
-
-// Enable MediaRenderer in media pipeline instead of using the internal
-// media::Renderer implementation.
-const char kEnableMojoMediaRenderer[] = "enable-mojo-media-renderer";
-
-// Disables support for (unprefixed) Encrypted Media Extensions.
-const char kDisableEncryptedMedia[] = "disable-encrypted-media";
-
-// Prevents creation of any output surface.
-const char kIsHeadless[] = "is-headless";
-
-size_t kDesiredMaxMemory = 20 * 1024 * 1024;
-
-class HTMLViewer;
-
-class HTMLViewerApplication : public mojo::Application {
- public:
- HTMLViewerApplication(InterfaceRequest<Application> request,
- URLResponsePtr response,
- scoped_refptr<base::MessageLoopProxy> compositor_thread,
- WebMediaPlayerFactory* web_media_player_factory,
- bool is_headless)
- : url_(response->url),
- binding_(this, request.Pass()),
- initial_response_(response.Pass()),
- compositor_thread_(compositor_thread),
- web_media_player_factory_(web_media_player_factory),
- is_headless_(is_headless) {}
-
- void Initialize(ShellPtr shell,
- Array<String> args,
- const String& url) override {
- ServiceProviderPtr service_provider;
- shell_ = shell.Pass();
- shell_->ConnectToApplication("mojo:network_service",
- GetProxy(&service_provider), nullptr);
- ConnectToService(service_provider.get(), &network_service_);
- }
-
- void AcceptConnection(const String& requestor_url,
- InterfaceRequest<ServiceProvider> services,
- ServiceProviderPtr exposed_services,
- const String& url) override {
- if (initial_response_) {
- OnResponseReceived(URLLoaderPtr(), services.Pass(),
- initial_response_.Pass());
- } else {
- URLLoaderPtr loader;
- network_service_->CreateURLLoader(GetProxy(&loader));
- mojo::URLRequestPtr request(mojo::URLRequest::New());
- request->url = url_;
- request->auto_follow_redirects = true;
-
- // |loader| will be pass to the OnResponseReceived method through a
- // callback. Because order of evaluation is undefined, a reference to the
- // raw pointer is needed.
- mojo::URLLoader* raw_loader = loader.get();
- raw_loader->Start(
- request.Pass(),
- base::Bind(&HTMLViewerApplication::OnResponseReceived,
- base::Unretained(this), base::Passed(&loader),
- base::Passed(&services)));
- }
- }
-
- void RequestQuit() override {}
-
- private:
- void OnResponseReceived(URLLoaderPtr loader,
- InterfaceRequest<ServiceProvider> services,
- URLResponsePtr response) {
- new HTMLDocument(services.Pass(), response.Pass(), shell_.get(),
- compositor_thread_, web_media_player_factory_,
- is_headless_);
- }
-
- String url_;
- mojo::StrongBinding<mojo::Application> binding_;
- ShellPtr shell_;
- mojo::NetworkServicePtr network_service_;
- URLResponsePtr initial_response_;
- scoped_refptr<base::MessageLoopProxy> compositor_thread_;
- WebMediaPlayerFactory* web_media_player_factory_;
- bool is_headless_;
-};
-
-class ContentHandlerImpl : public mojo::InterfaceImpl<ContentHandler> {
- public:
- ContentHandlerImpl(scoped_refptr<base::MessageLoopProxy> compositor_thread,
- WebMediaPlayerFactory* web_media_player_factory,
- bool is_headless)
- : compositor_thread_(compositor_thread),
- web_media_player_factory_(web_media_player_factory),
- is_headless_(is_headless) {}
- ~ContentHandlerImpl() override {}
-
- private:
- // Overridden from ContentHandler:
- void StartApplication(InterfaceRequest<mojo::Application> request,
- URLResponsePtr response) override {
- new HTMLViewerApplication(request.Pass(), response.Pass(),
- compositor_thread_, web_media_player_factory_,
- is_headless_);
- }
-
- scoped_refptr<base::MessageLoopProxy> compositor_thread_;
- WebMediaPlayerFactory* web_media_player_factory_;
- bool is_headless_;
-
- DISALLOW_COPY_AND_ASSIGN(ContentHandlerImpl);
-};
-
-class HTMLViewer : public mojo::ApplicationDelegate,
- public mojo::InterfaceFactory<ContentHandler> {
- public:
- HTMLViewer()
- : discardable_memory_allocator_(kDesiredMaxMemory),
- compositor_thread_("compositor thread") {}
-
- ~HTMLViewer() override { blink::shutdown(); }
-
- private:
- // Overridden from ApplicationDelegate:
- void Initialize(mojo::ApplicationImpl* app) override {
- base::DiscardableMemoryAllocator::SetInstance(
- &discardable_memory_allocator_);
-
- blink_platform_.reset(new BlinkPlatformImpl(app));
-#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
- // Note: this requires file system access.
- gin::V8Initializer::LoadV8Snapshot();
-#endif
- blink::initialize(blink_platform_.get());
- base::i18n::InitializeICU();
-
- ui::RegisterPathProvider();
-
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-
- logging::LoggingSettings settings;
- settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
- logging::InitLogging(settings);
- // Display process ID, thread ID and timestamp in logs.
- logging::SetLogItems(true, true, true, false);
-
- if (command_line->HasSwitch(kDisableEncryptedMedia))
- blink::WebRuntimeFeatures::enableEncryptedMedia(false);
-
- is_headless_ = command_line->HasSwitch(kIsHeadless);
- if (!is_headless_) {
- // TODO(sky): consider putting this into the .so so that we don't need
- // file system access.
- base::FilePath ui_test_pak_path;
- CHECK(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
- ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
- }
-
- compositor_thread_.Start();
-#if defined(OS_ANDROID)
- // TODO(sky): Get WebMediaPlayerFactory working on android.
- NOTIMPLEMENTED();
-#else
- bool enable_mojo_media_renderer =
- command_line->HasSwitch(kEnableMojoMediaRenderer);
-
- web_media_player_factory_.reset(new WebMediaPlayerFactory(
- compositor_thread_.message_loop_proxy(), enable_mojo_media_renderer));
-#endif
- }
-
- bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
- connection->AddService(this);
- return true;
- }
-
- // Overridden from InterfaceFactory<ContentHandler>
- void Create(ApplicationConnection* connection,
- mojo::InterfaceRequest<ContentHandler> request) override {
- BindToRequest(
- new ContentHandlerImpl(compositor_thread_.message_loop_proxy(),
- web_media_player_factory_.get(), is_headless_),
- &request);
- }
-
- // Skia requires that we have one of these. Unlike the one used in chrome,
- // this doesn't use purgable shared memory. Instead, it tries to free the
- // oldest unlocked chunks on allocation.
- //
- // TODO(erg): In the long run, delete this allocator and get the real shared
- // memory based purging allocator working here.
- DiscardableMemoryAllocator discardable_memory_allocator_;
-
- scoped_ptr<BlinkPlatformImpl> blink_platform_;
- base::Thread compositor_thread_;
- scoped_ptr<WebMediaPlayerFactory> web_media_player_factory_;
- // Set if the content will never be displayed.
- bool is_headless_;
-
- DISALLOW_COPY_AND_ASSIGN(HTMLViewer);
-};
-
-} // namespace html_viewer
-
-MojoResult MojoMain(MojoHandle shell_handle) {
- mojo::ApplicationRunnerChromium runner(new html_viewer::HTMLViewer);
- return runner.Run(shell_handle);
-}
« no previous file with comments | « mojo/services/html_viewer/html_document.cc ('k') | mojo/services/html_viewer/html_viewer_version.rc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698