// 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. #ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_FACTORY_H_ #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_FACTORY_H_ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" namespace base { class MessageLoopProxy; } namespace cc { class OutputSurface; } namespace content { // Decouples creation from usage of the parts needed for the synchonous // compositor rendering path. In practice this is only used in single // process mode (namely, for Android WebView) hence the implementation of // this will be injected from the logical 'browser' side code. class SynchronousCompositorFactory { public: // Must only be called once, e.g. on startup. Ownership of |instance| remains // with the caller. static void SetInstance(SynchronousCompositorFactory* instance); static SynchronousCompositorFactory* GetInstance(); virtual scoped_refptr GetCompositorMessageLoop() = 0; virtual scoped_ptr CreateOutputSurface( int routing_id) = 0; protected: SynchronousCompositorFactory() {} ~SynchronousCompositorFactory() {} }; } #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_FACTORY_H_