• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
6 #define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
7 
8 #include "athena/athena_export.h"
9 #include "url/gurl.h"
10 
11 namespace content {
12 class BrowserContext;
13 }
14 
15 namespace extensions {
16 class AppWindow;
17 }
18 
19 namespace views {
20 class WebView;
21 }
22 
23 namespace athena {
24 class Activity;
25 
26 class ATHENA_EXPORT ActivityFactory {
27  public:
28   // Registers the singleton factory.
29   static void RegisterActivityFactory(ActivityFactory* factory);
30 
31   // Gets the registered singleton factory.
32   static ActivityFactory* Get();
33 
34   // Shutdowns the factory.
35   static void Shutdown();
36 
~ActivityFactory()37   virtual ~ActivityFactory() {}
38 
39   // Create an activity of a web page. If |title| is empty, the title will be
40   // obtained from the web contents.
41   virtual Activity* CreateWebActivity(content::BrowserContext* browser_context,
42                                       const base::string16& title,
43                                       const GURL& url) = 0;
44 
45   // Create an activity of an app with |app_window| for chrome environment and
46   // |web_view| that will host the content.
47   virtual Activity* CreateAppActivity(extensions::AppWindow* app_window,
48                                       views::WebView* web_view) = 0;
49 };
50 
51 }  // namespace athena
52 
53 #endif  // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
54