0
Files
src/content/renderer/in_process_renderer_thread.cc
Simeon Anfinrud 52fd5e5cd2 [content] Remove Android debugging CHECKs in render thread.
These asserts are no longer actively being used for debugging.

When this is compiled on the Android component build, the linker
cannot find the extern bool declared by another shared library.
This patch disables the InProcessRenderThread checks, which were
intended for debugging in production, so that developers can at
least attempt to use the component build on Android.

Bug: Internal b/64440217
Bug: 514141
Test: chromecast internal Android component build
Change-Id: Iac24c87867e218f98c130677e6baff9142a7fe84
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1898812
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Commit-Queue: Simeon Anfinrud <sanfin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714138}
2019-11-11 03:12:13 +00:00

74 lines
2.9 KiB
C++

// Copyright 2013 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 "content/renderer/in_process_renderer_thread.h"
#include "build/build_config.h"
#include "content/renderer/render_process.h"
#include "content/renderer/render_process_impl.h"
#include "content/renderer/render_thread_impl.h"
#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
#if defined(OS_ANDROID)
#include "base/android/jni_android.h"
#endif
namespace content {
InProcessRendererThread::InProcessRendererThread(
const InProcessChildThreadParams& params,
int32_t renderer_client_id)
: Thread("Chrome_InProcRendererThread"),
params_(params),
renderer_client_id_(renderer_client_id) {}
InProcessRendererThread::~InProcessRendererThread() {
Stop();
}
void InProcessRendererThread::Init() {
// Call AttachCurrentThreadWithName, before any other AttachCurrentThread()
// calls. The latter causes Java VM to assign Thread-??? to the thread name.
// Please note calls to AttachCurrentThreadWithName after AttachCurrentThread
// will not change the thread name kept in Java VM.
#if defined(OS_ANDROID)
base::android::AttachCurrentThreadWithName(thread_name());
// Make sure we aren't somehow reinitialising the inprocess renderer thread on
// Android. Temporary CHECK() to debug http://crbug.com/514141
CHECK(!render_process_);
#endif
std::unique_ptr<blink::scheduler::WebThreadScheduler> main_thread_scheduler =
blink::scheduler::WebThreadScheduler::CreateMainThreadScheduler();
render_process_ = RenderProcessImpl::Create();
// RenderThreadImpl doesn't currently support a proper shutdown sequence
// and it's okay when we're running in multi-process mode because renderers
// get killed by the OS. In-process mode is used for test and debug only.
new RenderThreadImpl(params_, renderer_client_id_,
std::move(main_thread_scheduler));
}
void InProcessRendererThread::CleanUp() {
render_process_.reset();
// It's a little lame to manually set this flag. But the single process
// RendererThread will receive the WM_QUIT. We don't need to assert on
// this thread, so just force the flag manually.
// If we want to avoid this, we could create the InProcRendererThread
// directly with _beginthreadex() rather than using the Thread class.
// We used to set this flag in the Init function above. However there
// other threads like WebThread which are created by this thread
// which resets this flag. Please see Thread::StartWithOptions. Setting
// this flag to true in Cleanup works around these problems.
SetThreadWasQuitProperly(true);
}
base::Thread* CreateInProcessRendererThread(
const InProcessChildThreadParams& params,
int32_t renderer_client_id) {
return new InProcessRendererThread(params, renderer_client_id);
}
} // namespace content