1 // Copyright 2014 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.
5 #include "mojo/runner/android/ui_application_loader_android.h"
8 #include "base/message_loop/message_loop.h"
9 #include "mojo/shell/application_manager.h"
14 UIApplicationLoader::UIApplicationLoader(
15 scoped_ptr
<ApplicationLoader
> real_loader
,
16 base::MessageLoop
* ui_message_loop
)
17 : loader_(real_loader
.Pass()), ui_message_loop_(ui_message_loop
) {
20 UIApplicationLoader::~UIApplicationLoader() {
21 ui_message_loop_
->PostTask(
22 FROM_HERE
, base::Bind(&UIApplicationLoader::ShutdownOnUIThread
,
23 base::Unretained(this)));
26 void UIApplicationLoader::Load(
28 InterfaceRequest
<Application
> application_request
) {
29 DCHECK(application_request
.is_pending());
30 ui_message_loop_
->PostTask(
32 base::Bind(&UIApplicationLoader::LoadOnUIThread
, base::Unretained(this),
33 url
, base::Passed(&application_request
)));
36 void UIApplicationLoader::LoadOnUIThread(
38 InterfaceRequest
<Application
> application_request
) {
39 loader_
->Load(url
, application_request
.Pass());
42 void UIApplicationLoader::ShutdownOnUIThread() {
43 // Destroy |loader_| on the thread it's actually used on.