webthread_impl.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Copyright 2014 The Chromium Authors. All rights reserved. 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// found in the LICENSE file. 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef CONTENT_CHILD_WEBTHREAD_IMPL_H_ 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CONTENT_CHILD_WEBTHREAD_IMPL_H_ 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <map> 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "base/memory/scoped_ptr.h" 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "base/threading/thread.h" 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "content/common/content_export.h" 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "third_party/WebKit/public/platform/WebThread.h" 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectnamespace content { 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectclass CONTENT_EXPORT WebThreadBase : public blink::WebThread { 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project public: 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual ~WebThreadBase(); 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void addTaskObserver(TaskObserver* observer); 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void removeTaskObserver(TaskObserver* observer); 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual bool isCurrentThread() const = 0; 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project protected: 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project WebThreadBase(); 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project private: 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project class TaskObserverAdapter; 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef std::map<TaskObserver*, TaskObserverAdapter*> TaskObserverMap; 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TaskObserverMap task_observer_map_; 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectclass CONTENT_EXPORT WebThreadImpl : public WebThreadBase { 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project public: 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project explicit WebThreadImpl(const char* name); 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual ~WebThreadImpl(); 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void postTask(Task* task); 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void postDelayedTask(Task* task, long long delay_ms); 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void enterRunLoop(); 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void exitRunLoop(); 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project base::MessageLoop* message_loop() const { return thread_->message_loop(); } 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual bool isCurrentThread() const OVERRIDE; 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project private: 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project scoped_ptr<base::Thread> thread_; 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectclass WebThreadImplForMessageLoop : public WebThreadBase { 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project public: 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project CONTENT_EXPORT explicit WebThreadImplForMessageLoop( 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project base::MessageLoopProxy* message_loop); 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project CONTENT_EXPORT virtual ~WebThreadImplForMessageLoop(); 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void postTask(Task* task) OVERRIDE; 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void postDelayedTask(Task* task, long long delay_ms) OVERRIDE; 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void enterRunLoop() OVERRIDE; 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual void exitRunLoop() OVERRIDE; 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project private: 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project virtual bool isCurrentThread() const OVERRIDE; 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project scoped_refptr<base::MessageLoopProxy> message_loop_; 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} // namespace content 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif // CONTENT_CHILD_WEBTHREAD_IMPL_H_ 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project