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

Unified Diff: webkit/tools/test_shell/simple_appcache_system.cc

Issue 15946006: Move C++ code from webkit/tools/test_shell to webkit/support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix npapi_test_plugin Created 7 years, 7 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 | « webkit/tools/test_shell/simple_appcache_system.h ('k') | webkit/tools/test_shell/simple_clipboard_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/tools/test_shell/simple_appcache_system.cc
diff --git a/webkit/tools/test_shell/simple_appcache_system.cc b/webkit/tools/test_shell/simple_appcache_system.cc
deleted file mode 100644
index 7c6e0ed714f3517f4054048be1089de060da6d82..0000000000000000000000000000000000000000
--- a/webkit/tools/test_shell/simple_appcache_system.cc
+++ /dev/null
@@ -1,465 +0,0 @@
-// Copyright (c) 2011 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 "webkit/tools/test_shell/simple_appcache_system.h"
-
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/callback.h"
-#include "base/synchronization/waitable_event.h"
-#include "webkit/appcache/appcache_interceptor.h"
-#include "webkit/appcache/web_application_cache_host_impl.h"
-#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
-
-using WebKit::WebApplicationCacheHost;
-using WebKit::WebApplicationCacheHostClient;
-using appcache::WebApplicationCacheHostImpl;
-using appcache::AppCacheBackendImpl;
-using appcache::AppCacheInterceptor;
-
-// SimpleFrontendProxy --------------------------------------------------------
-// Proxies method calls from the backend IO thread to the frontend UI thread.
-
-class SimpleFrontendProxy
- : public base::RefCountedThreadSafe<SimpleFrontendProxy>,
- public appcache::AppCacheFrontend {
- public:
- explicit SimpleFrontendProxy(SimpleAppCacheSystem* appcache_system)
- : system_(appcache_system) {
- }
-
- void clear_appcache_system() { system_ = NULL; }
-
- virtual void OnCacheSelected(int host_id,
- const appcache::AppCacheInfo& info) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread()) {
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnCacheSelected, this, host_id,
- info));
- } else if (system_->is_ui_thread()) {
- system_->frontend_impl_.OnCacheSelected(host_id, info);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void OnStatusChanged(const std::vector<int>& host_ids,
- appcache::Status status) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread())
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnStatusChanged, this, host_ids,
- status));
- else if (system_->is_ui_thread())
- system_->frontend_impl_.OnStatusChanged(host_ids, status);
- else
- NOTREACHED();
- }
-
- virtual void OnEventRaised(const std::vector<int>& host_ids,
- appcache::EventID event_id) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread())
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnEventRaised, this, host_ids,
- event_id));
- else if (system_->is_ui_thread())
- system_->frontend_impl_.OnEventRaised(host_ids, event_id);
- else
- NOTREACHED();
- }
-
- virtual void OnProgressEventRaised(const std::vector<int>& host_ids,
- const GURL& url,
- int num_total, int num_complete) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread())
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnProgressEventRaised, this,
- host_ids, url, num_total, num_complete));
- else if (system_->is_ui_thread())
- system_->frontend_impl_.OnProgressEventRaised(
- host_ids, url, num_total, num_complete);
- else
- NOTREACHED();
- }
-
- virtual void OnErrorEventRaised(const std::vector<int>& host_ids,
- const std::string& message) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread())
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnErrorEventRaised, this, host_ids,
- message));
- else if (system_->is_ui_thread())
- system_->frontend_impl_.OnErrorEventRaised(
- host_ids, message);
- else
- NOTREACHED();
- }
-
- virtual void OnLogMessage(int host_id,
- appcache::LogLevel log_level,
- const std::string& message) OVERRIDE {
- if (!system_)
- return;
- if (system_->is_io_thread())
- system_->ui_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleFrontendProxy::OnLogMessage, this, host_id,
- log_level, message));
- else if (system_->is_ui_thread())
- system_->frontend_impl_.OnLogMessage(
- host_id, log_level, message);
- else
- NOTREACHED();
- }
-
- virtual void OnContentBlocked(int host_id,
- const GURL& manifest_url) OVERRIDE {}
-
- private:
- friend class base::RefCountedThreadSafe<SimpleFrontendProxy>;
-
- virtual ~SimpleFrontendProxy() {}
-
- SimpleAppCacheSystem* system_;
-};
-
-
-// SimpleBackendProxy --------------------------------------------------------
-// Proxies method calls from the frontend UI thread to the backend IO thread.
-
-class SimpleBackendProxy
- : public base::RefCountedThreadSafe<SimpleBackendProxy>,
- public appcache::AppCacheBackend {
- public:
- explicit SimpleBackendProxy(SimpleAppCacheSystem* appcache_system)
- : system_(appcache_system), event_(true, false) {
- get_status_callback_ =
- base::Bind(&SimpleBackendProxy::GetStatusCallback,
- base::Unretained(this));
- start_update_callback_ =
- base::Bind(&SimpleBackendProxy::StartUpdateCallback,
- base::Unretained(this));
- swap_cache_callback_=
- base::Bind(&SimpleBackendProxy::SwapCacheCallback,
- base::Unretained(this));
- }
-
- virtual void RegisterHost(int host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::RegisterHost, this, host_id));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->RegisterHost(host_id);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void UnregisterHost(int host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::UnregisterHost, this, host_id));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->UnregisterHost(host_id);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void SetSpawningHostId(int host_id, int spawning_host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::SetSpawningHostId, this, host_id,
- spawning_host_id));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->SetSpawningHostId(host_id, spawning_host_id);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void SelectCache(int host_id,
- const GURL& document_url,
- const int64 cache_document_was_loaded_from,
- const GURL& manifest_url) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::SelectCache, this, host_id,
- document_url, cache_document_was_loaded_from,
- manifest_url));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->SelectCache(host_id, document_url,
- cache_document_was_loaded_from,
- manifest_url);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void GetResourceList(
- int host_id,
- std::vector<appcache::AppCacheResourceInfo>* resource_infos) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::GetResourceList, this, host_id,
- resource_infos));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->GetResourceList(host_id, resource_infos);
- } else {
- NOTREACHED();
- }
- }
-
- virtual void SelectCacheForWorker(
- int host_id,
- int parent_process_id,
- int parent_host_id) OVERRIDE {
- NOTIMPLEMENTED(); // Workers are not supported in test_shell.
- }
-
- virtual void SelectCacheForSharedWorker(
- int host_id,
- int64 appcache_id) OVERRIDE {
- NOTIMPLEMENTED(); // Workers are not supported in test_shell.
- }
-
- virtual void MarkAsForeignEntry(
- int host_id,
- const GURL& document_url,
- int64 cache_document_was_loaded_from) OVERRIDE {
- if (system_->is_ui_thread()) {
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&SimpleBackendProxy::MarkAsForeignEntry, this, host_id,
- document_url, cache_document_was_loaded_from));
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->MarkAsForeignEntry(
- host_id, document_url,
- cache_document_was_loaded_from);
- } else {
- NOTREACHED();
- }
- }
-
- virtual appcache::Status GetStatus(int host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- status_result_ = appcache::UNCACHED;
- event_.Reset();
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(base::IgnoreResult(&SimpleBackendProxy::GetStatus),
- this, host_id));
- event_.Wait();
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->GetStatusWithCallback(
- host_id, get_status_callback_, NULL);
- } else {
- NOTREACHED();
- }
- return status_result_;
- }
-
- virtual bool StartUpdate(int host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- bool_result_ = false;
- event_.Reset();
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(base::IgnoreResult(&SimpleBackendProxy::StartUpdate),
- this, host_id));
- event_.Wait();
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->StartUpdateWithCallback(
- host_id, start_update_callback_, NULL);
- } else {
- NOTREACHED();
- }
- return bool_result_;
- }
-
- virtual bool SwapCache(int host_id) OVERRIDE {
- if (system_->is_ui_thread()) {
- bool_result_ = false;
- event_.Reset();
- system_->io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(base::IgnoreResult(&SimpleBackendProxy::SwapCache),
- this, host_id));
- event_.Wait();
- } else if (system_->is_io_thread()) {
- system_->backend_impl_->SwapCacheWithCallback(
- host_id, swap_cache_callback_, NULL);
- } else {
- NOTREACHED();
- }
- return bool_result_;
- }
-
- void GetStatusCallback(appcache::Status status, void* param) {
- status_result_ = status;
- event_.Signal();
- }
-
- void StartUpdateCallback(bool result, void* param) {
- bool_result_ = result;
- event_.Signal();
- }
-
- void SwapCacheCallback(bool result, void* param) {
- bool_result_ = result;
- event_.Signal();
- }
-
- void SignalEvent() {
- event_.Signal();
- }
-
- private:
- friend class base::RefCountedThreadSafe<SimpleBackendProxy>;
-
- virtual ~SimpleBackendProxy() {}
-
- SimpleAppCacheSystem* system_;
- base::WaitableEvent event_;
- bool bool_result_;
- appcache::Status status_result_;
- appcache::GetStatusCallback get_status_callback_;
- appcache::StartUpdateCallback start_update_callback_;
- appcache::SwapCacheCallback swap_cache_callback_;
-};
-
-
-// SimpleAppCacheSystem --------------------------------------------------------
-
-// This class only works for a single process browser.
-static const int kSingleProcessId = 1;
-
-// A not so thread safe singleton, but should work for test_shell.
-SimpleAppCacheSystem* SimpleAppCacheSystem::instance_ = NULL;
-
-SimpleAppCacheSystem::SimpleAppCacheSystem()
- : io_message_loop_(NULL), ui_message_loop_(NULL),
- backend_proxy_(new SimpleBackendProxy(this)),
- frontend_proxy_(new SimpleFrontendProxy(this)),
- backend_impl_(NULL), service_(NULL), db_thread_("AppCacheDBThread") {
- DCHECK(!instance_);
- instance_ = this;
-}
-
-static void SignalEvent(base::WaitableEvent* event) {
- event->Signal();
-}
-
-SimpleAppCacheSystem::~SimpleAppCacheSystem() {
- DCHECK(!io_message_loop_ && !backend_impl_ && !service_);
- frontend_proxy_->clear_appcache_system(); // in case a task is in transit
- instance_ = NULL;
-
- if (db_thread_.IsRunning()) {
- // We pump a task thru the db thread to ensure any tasks previously
- // scheduled on that thread have been performed prior to return.
- base::WaitableEvent event(false, false);
- db_thread_.message_loop()->PostTask(
- FROM_HERE, base::Bind(&SignalEvent, &event));
- event.Wait();
- }
-}
-
-void SimpleAppCacheSystem::InitOnUIThread(
- const base::FilePath& cache_directory) {
- DCHECK(!ui_message_loop_);
- ui_message_loop_ = base::MessageLoop::current();
- cache_directory_ = cache_directory;
-}
-
-void SimpleAppCacheSystem::InitOnIOThread(
- net::URLRequestContext* request_context) {
- if (!is_initailized_on_ui_thread())
- return;
-
- DCHECK(!io_message_loop_);
- io_message_loop_ = base::MessageLoop::current();
-
- if (!db_thread_.IsRunning())
- db_thread_.Start();
-
- // Recreate and initialize per each IO thread.
- service_ = new appcache::AppCacheService(NULL);
- backend_impl_ = new appcache::AppCacheBackendImpl();
- service_->Initialize(cache_directory_,
- db_thread_.message_loop_proxy(),
- SimpleResourceLoaderBridge::GetCacheThread());
- service_->set_request_context(request_context);
- backend_impl_->Initialize(service_, frontend_proxy_.get(), kSingleProcessId);
-
- AppCacheInterceptor::EnsureRegistered();
-}
-
-void SimpleAppCacheSystem::CleanupIOThread() {
- DCHECK(is_io_thread());
-
- delete backend_impl_;
- delete service_;
- backend_impl_ = NULL;
- service_ = NULL;
- io_message_loop_ = NULL;
-
- // Just in case the main thread is waiting on it.
- backend_proxy_->SignalEvent();
-}
-
-WebApplicationCacheHost* SimpleAppCacheSystem::CreateCacheHostForWebKit(
- WebApplicationCacheHostClient* client) {
- if (!is_initailized_on_ui_thread())
- return NULL;
-
- DCHECK(is_ui_thread());
-
- // The IO thread needs to be running for this system to work.
- SimpleResourceLoaderBridge::EnsureIOThread();
-
- if (!is_initialized())
- return NULL;
- return new WebApplicationCacheHostImpl(client, backend_proxy_.get());
-}
-
-void SimpleAppCacheSystem::SetExtraRequestBits(
- net::URLRequest* request, int host_id, ResourceType::Type resource_type) {
- if (is_initialized()) {
- DCHECK(is_io_thread());
- AppCacheInterceptor::SetExtraRequestInfo(
- request, service_, kSingleProcessId, host_id, resource_type);
- }
-}
-
-void SimpleAppCacheSystem::GetExtraResponseBits(
- net::URLRequest* request, int64* cache_id, GURL* manifest_url) {
- if (is_initialized()) {
- DCHECK(is_io_thread());
- AppCacheInterceptor::GetExtraResponseInfo(
- request, cache_id, manifest_url);
- }
-}
« no previous file with comments | « webkit/tools/test_shell/simple_appcache_system.h ('k') | webkit/tools/test_shell/simple_clipboard_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698