blob: db544cc80c314f8338f6147eb8bd628df5fd2bbd [file] [log] [blame]
// Copyright 2017 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 WebFactory_h
#define WebFactory_h
#include "core/CoreExport.h"
#include "public/platform/WebPageVisibilityState.h"
namespace blink {
class ChromeClient;
class WebViewBase;
class WebViewClient;
// WebFactory is a temporary class implemented in web/ that allows classes to
// construct interfaces that are being moved out of web/.
// This class will be removed once all implementations are in core/ or modules/.
class CORE_EXPORT WebFactory {
public:
static WebFactory& GetInstance();
virtual ChromeClient* CreateChromeClient(WebViewBase*) const = 0;
virtual WebViewBase* CreateWebViewBase(WebViewClient*,
WebPageVisibilityState) const = 0;
protected:
// Takes ownership of |factory|.
static void SetInstance(WebFactory&);
private:
static WebFactory* factory_instance_;
};
} // namespace blink
#endif