OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/app/android/content_main.h" | 5 #include "content/app/android/content_main.h" |
6 | 6 |
7 #include "base/at_exit.h" | 7 #include "base/at_exit.h" |
8 #include "base/base_switches.h" | 8 #include "base/base_switches.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 LAZY_INSTANCE_INITIALIZER; | 24 LAZY_INSTANCE_INITIALIZER; |
25 | 25 |
26 LazyInstance<scoped_ptr<ContentMainDelegate> > g_content_main_delegate = | 26 LazyInstance<scoped_ptr<ContentMainDelegate> > g_content_main_delegate = |
27 LAZY_INSTANCE_INITIALIZER; | 27 LAZY_INSTANCE_INITIALIZER; |
28 | 28 |
29 } // namespace | 29 } // namespace |
30 | 30 |
31 static void InitApplicationContext(JNIEnv* env, | 31 static void InitApplicationContext(JNIEnv* env, |
32 const JavaParamRef<jclass>& clazz, | 32 const JavaParamRef<jclass>& clazz, |
33 const JavaParamRef<jobject>& context) { | 33 const JavaParamRef<jobject>& context) { |
34 base::android::ScopedJavaLocalRef<jobject> scoped_context( | 34 base::android::InitApplicationContext(env, context); |
35 env, env->NewLocalRef(context)); | |
36 base::android::InitApplicationContext(env, scoped_context); | |
37 } | 35 } |
38 | 36 |
39 static jint Start(JNIEnv* env, const JavaParamRef<jclass>& clazz) { | 37 static jint Start(JNIEnv* env, const JavaParamRef<jclass>& clazz) { |
40 TRACE_EVENT0("startup", "content::Start"); | 38 TRACE_EVENT0("startup", "content::Start"); |
41 | 39 |
42 // On Android we can have multiple requests to start the browser in process | 40 // On Android we can have multiple requests to start the browser in process |
43 // simultaneously. If we get an asynchonous request followed by a synchronous | 41 // simultaneously. If we get an asynchonous request followed by a synchronous |
44 // request then we have to call this a second time to finish starting the | 42 // request then we have to call this a second time to finish starting the |
45 // browser synchronously. | 43 // browser synchronously. |
46 if (!g_content_runner.Get().get()) { | 44 if (!g_content_runner.Get().get()) { |
47 ContentMainParams params(g_content_main_delegate.Get().get()); | 45 ContentMainParams params(g_content_main_delegate.Get().get()); |
48 g_content_runner.Get().reset(ContentMainRunner::Create()); | 46 g_content_runner.Get().reset(ContentMainRunner::Create()); |
49 g_content_runner.Get()->Initialize(params); | 47 g_content_runner.Get()->Initialize(params); |
50 } | 48 } |
51 return g_content_runner.Get()->Run(); | 49 return g_content_runner.Get()->Run(); |
52 } | 50 } |
53 | 51 |
54 void SetContentMainDelegate(ContentMainDelegate* delegate) { | 52 void SetContentMainDelegate(ContentMainDelegate* delegate) { |
55 DCHECK(!g_content_main_delegate.Get().get()); | 53 DCHECK(!g_content_main_delegate.Get().get()); |
56 g_content_main_delegate.Get().reset(delegate); | 54 g_content_main_delegate.Get().reset(delegate); |
57 } | 55 } |
58 | 56 |
59 bool RegisterContentMain(JNIEnv* env) { | 57 bool RegisterContentMain(JNIEnv* env) { |
60 return RegisterNativesImpl(env); | 58 return RegisterNativesImpl(env); |
61 } | 59 } |
62 | 60 |
63 } // namespace content | 61 } // namespace content |
OLD | NEW |