146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#ifndef ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "athena/athena_export.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "url/gurl.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace content {
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class BrowserContext;
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions {
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass AppWindow;
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace views {
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebView;
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace athena {
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class Activity;
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class ATHENA_EXPORT ActivityFactory {
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Registers the singleton factory.
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  static void RegisterActivityFactory(ActivityFactory* factory);
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Gets the registered singleton factory.
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  static ActivityFactory* Get();
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Shutdowns the factory.
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  static void Shutdown();
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~ActivityFactory() {}
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Create an activity of a web page. If |title| is empty, the title will be
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // obtained from the web contents.
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual Activity* CreateWebActivity(content::BrowserContext* browser_context,
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                      const base::string16& title,
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                      const GURL& url) = 0;
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Create an activity of an app with |app_window| for chrome environment and
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // |web_view| that will host the content.
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual Activity* CreateAppActivity(extensions::AppWindow* app_window,
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                      views::WebView* web_view) = 0;
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace athena
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif  // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_FACTORY_H_
54