Home | History | Annotate | Download | only in frame
      1 // Copyright 2013 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 CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_FACTORY_H_
      6 #define CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_FACTORY_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "chrome/browser/ui/host_desktop.h"
     10 
     11 class BrowserFrame;
     12 class BrowserView;
     13 class NativeBrowserFrame;
     14 
     15 // Factory for creating a NativeBrowserFrame.
     16 class NativeBrowserFrameFactory {
     17  public:
     18   // Construct a platform-specific implementation of this interface.
     19   static NativeBrowserFrame* CreateNativeBrowserFrame(
     20       BrowserFrame* browser_frame,
     21       BrowserView* browser_view);
     22 
     23   // Sets the factory. Takes ownership of |new_factory|, deleting existing
     24   // factory. Use NULL to go back to default factory.
     25   static void Set(NativeBrowserFrameFactory* new_factory);
     26 
     27   // Returns HOST_DESKTOP_TYPE_ASH on Windows when configured to allow browser
     28   // windows only in Metro mode, otherwise |desktop_type|.
     29   static chrome::HostDesktopType AdjustHostDesktopType(
     30       chrome::HostDesktopType desktop_type);
     31 
     32   virtual NativeBrowserFrame* Create(BrowserFrame* browser_frame,
     33                                      BrowserView* browser_view);
     34 
     35  protected:
     36   NativeBrowserFrameFactory() {}
     37   virtual ~NativeBrowserFrameFactory() {}
     38 
     39  private:
     40   // For Chrome running on desktop platforms, returns true if the factory should
     41   // create an ash browser frame for the provided |browser_view|.
     42   static bool ShouldCreateForAshDesktop(BrowserView* browser_view);
     43 
     44   DISALLOW_COPY_AND_ASSIGN(NativeBrowserFrameFactory);
     45 };
     46 
     47 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_NATIVE_BROWSER_FRAME_FACTORY_H_
     48