diff options
author | ben <ben@chromium.org> | 2015-04-27 14:52:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-27 21:52:56 +0000 |
commit | ee05293936b654dfbc42889ba374bba21bd5c453 (patch) | |
tree | de694f31a0a2f21e60750a9b92902127f08293fc /mojo/shell/android/background_application_loader.cc | |
parent | 9cfdfc07ef3042e059d5a51a91cbe4f13cfca341 (diff) | |
download | chromium_src-ee05293936b654dfbc42889ba374bba21bd5c453.zip chromium_src-ee05293936b654dfbc42889ba374bba21bd5c453.tar.gz chromium_src-ee05293936b654dfbc42889ba374bba21bd5c453.tar.bz2 |
Separate mojo/shell into a runner and the application manager (shell)
R=sky@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1091513005
Cr-Commit-Position: refs/heads/master@{#327148}
Diffstat (limited to 'mojo/shell/android/background_application_loader.cc')
-rw-r--r-- | mojo/shell/android/background_application_loader.cc | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/mojo/shell/android/background_application_loader.cc b/mojo/shell/android/background_application_loader.cc deleted file mode 100644 index cdb175e..0000000 --- a/mojo/shell/android/background_application_loader.cc +++ /dev/null @@ -1,73 +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 "mojo/shell/android/background_application_loader.h" - -#include "base/bind.h" -#include "base/run_loop.h" -#include "mojo/shell/application_manager/application_manager.h" - -namespace mojo { -namespace shell { - -BackgroundApplicationLoader::BackgroundApplicationLoader( - scoped_ptr<ApplicationLoader> real_loader, - const std::string& thread_name, - base::MessageLoop::Type message_loop_type) - : loader_(real_loader.Pass()), - message_loop_type_(message_loop_type), - thread_name_(thread_name), - message_loop_created_(true, false) { -} - -BackgroundApplicationLoader::~BackgroundApplicationLoader() { - if (thread_) - thread_->Join(); -} - -void BackgroundApplicationLoader::Load( - const GURL& url, - InterfaceRequest<Application> application_request) { - DCHECK(application_request.is_pending()); - if (!thread_) { - // TODO(tim): It'd be nice if we could just have each Load call - // result in a new thread like DynamicService{Loader, Runner}. But some - // loaders are creating multiple ApplicationImpls (NetworkApplicationLoader) - // sharing a delegate (etc). So we have to keep it single threaded, wait - // for the thread to initialize, and post to the TaskRunner for subsequent - // Load calls for now. - thread_.reset(new base::DelegateSimpleThread(this, thread_name_)); - thread_->Start(); - message_loop_created_.Wait(); - DCHECK(task_runner_.get()); - } - - task_runner_->PostTask( - FROM_HERE, - base::Bind(&BackgroundApplicationLoader::LoadOnBackgroundThread, - base::Unretained(this), url, - base::Passed(&application_request))); -} - -void BackgroundApplicationLoader::Run() { - base::MessageLoop message_loop(message_loop_type_); - base::RunLoop loop; - task_runner_ = message_loop.task_runner(); - quit_closure_ = loop.QuitClosure(); - message_loop_created_.Signal(); - loop.Run(); - - // Destroy |loader_| on the thread it's actually used on. - loader_.reset(); -} - -void BackgroundApplicationLoader::LoadOnBackgroundThread( - const GURL& url, - InterfaceRequest<Application> application_request) { - DCHECK(task_runner_->RunsTasksOnCurrentThread()); - loader_->Load(url, application_request.Pass()); -} - -} // namespace shell -} // namespace mojo |