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

Unified Diff: extensions/renderer/api_binding_test.cc

Issue 2947463002: [Extensions Bindings] Add a bindings/ subdirectory under renderer (Closed)
Patch Set: . Created 3 years, 6 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 | « extensions/renderer/api_binding_test.h ('k') | extensions/renderer/api_binding_test_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/api_binding_test.cc
diff --git a/extensions/renderer/api_binding_test.cc b/extensions/renderer/api_binding_test.cc
deleted file mode 100644
index 05ad0d8c8de8ec2d437ff5d61cdf5f86aeb4f4cc..0000000000000000000000000000000000000000
--- a/extensions/renderer/api_binding_test.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2016 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 "extensions/renderer/api_binding_test.h"
-
-#include "base/memory/ptr_util.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "gin/array_buffer.h"
-#include "gin/public/context_holder.h"
-#include "gin/public/isolate_holder.h"
-#include "gin/v8_initializer.h"
-
-namespace extensions {
-
-APIBindingTest::APIBindingTest() {}
-APIBindingTest::~APIBindingTest() {}
-
-v8::ExtensionConfiguration* APIBindingTest::GetV8ExtensionConfiguration() {
- return nullptr;
-}
-
-void APIBindingTest::SetUp() {
- // Much of this initialization is stolen from the somewhat-similar
- // gin::V8Test.
-#ifdef V8_USE_EXTERNAL_STARTUP_DATA
- gin::V8Initializer::LoadV8Snapshot();
- gin::V8Initializer::LoadV8Natives();
-#endif
-
- gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode,
- gin::IsolateHolder::kStableV8Extras,
- gin::ArrayBufferAllocator::SharedInstance());
-
- isolate_holder_ =
- base::MakeUnique<gin::IsolateHolder>(base::ThreadTaskRunnerHandle::Get());
- isolate()->Enter();
-
- v8::HandleScope handle_scope(isolate());
- v8::Local<v8::Context> context =
- v8::Context::New(isolate(), GetV8ExtensionConfiguration());
- context->Enter();
- main_context_holder_ = base::MakeUnique<gin::ContextHolder>(isolate());
- main_context_holder_->SetContext(context);
-}
-
-void APIBindingTest::TearDown() {
- if (main_context_holder_ || !additional_context_holders_.empty()) {
- DisposeAllContexts();
- } else {
- // The context was already deleted (as through DisposeContext()), but we
- // still need to garbage collect.
- RunGarbageCollection();
- }
-
- isolate()->Exit();
- isolate_holder_.reset();
-}
-
-void APIBindingTest::DisposeAllContexts() {
- auto dispose_and_check_context =
- [this](std::unique_ptr<gin::ContextHolder>& holder, bool exit) {
- // Check for leaks - a weak handle to a context is invalidated on
- // context destruction, so resetting the context should reset the
- // handle.
- v8::Global<v8::Context> weak_context;
- {
- v8::HandleScope handle_scope(isolate());
- v8::Local<v8::Context> context = holder->context();
- weak_context.Reset(isolate(), context);
- weak_context.SetWeak();
- OnWillDisposeContext(context);
- if (exit)
- context->Exit();
- }
- holder.reset();
-
- // Garbage collect everything so that we find any issues where we might
- // be double-freeing.
- RunGarbageCollection();
-
- // The context should have been deleted.
- // (ASSERT_TRUE is not used, so that Isolate::Exit is still called.)
- EXPECT_TRUE(weak_context.IsEmpty());
- };
-
- for (auto& context_holder : additional_context_holders_)
- dispose_and_check_context(context_holder, false);
- additional_context_holders_.clear();
-
- if (main_context_holder_)
- dispose_and_check_context(main_context_holder_, true);
-}
-
-v8::Local<v8::Context> APIBindingTest::AddContext() {
- auto holder = base::MakeUnique<gin::ContextHolder>(isolate());
- v8::Local<v8::Context> context =
- v8::Context::New(isolate(), GetV8ExtensionConfiguration());
- holder->SetContext(context);
- additional_context_holders_.push_back(std::move(holder));
- return context;
-}
-
-v8::Local<v8::Context> APIBindingTest::MainContext() {
- return main_context_holder_->context();
-}
-
-void APIBindingTest::DisposeContext(v8::Local<v8::Context> context) {
- if (main_context_holder_ && context == main_context_holder_->context()) {
- OnWillDisposeContext(context);
- main_context_holder_.reset();
- return;
- }
-
- auto iter = std::find_if(
- additional_context_holders_.begin(), additional_context_holders_.end(),
- [context](const std::unique_ptr<gin::ContextHolder>& holder) {
- return holder->context() == context;
- });
- ASSERT_TRUE(iter != additional_context_holders_.end())
- << "Could not find context";
- OnWillDisposeContext(context);
- additional_context_holders_.erase(iter);
-}
-
-v8::Isolate* APIBindingTest::isolate() {
- return isolate_holder_->isolate();
-}
-
-void APIBindingTest::RunGarbageCollection() {
- // '5' is a magic number stolen from Blink; arbitrarily large enough to
- // hopefully clean up all the various paths.
- for (int i = 0; i < 5; ++i) {
- isolate()->RequestGarbageCollectionForTesting(
- v8::Isolate::kFullGarbageCollection);
- }
-}
-
-} // namespace extensions
« no previous file with comments | « extensions/renderer/api_binding_test.h ('k') | extensions/renderer/api_binding_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698