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 CHROMECAST_SHELL_BROWSER_CAST_BROWSER_MAIN_PARTS_H_
6#define CHROMECAST_SHELL_BROWSER_CAST_BROWSER_MAIN_PARTS_H_
7
8#include "base/macros.h"
9#include "base/memory/ref_counted.h"
10#include "base/memory/scoped_ptr.h"
11#include "content/public/browser/browser_main_parts.h"
12#include "content/public/common/main_function_params.h"
13
14namespace chromecast {
15namespace shell {
16class CastBrowserProcess;
17class URLRequestContextFactory;
18
19class CastBrowserMainParts : public content::BrowserMainParts {
20 public:
21  CastBrowserMainParts(
22      const content::MainFunctionParams& parameters,
23      URLRequestContextFactory* url_request_context_factory);
24  virtual ~CastBrowserMainParts();
25
26  // content::BrowserMainParts implementation:
27  virtual void PreMainMessageLoopStart() OVERRIDE;
28  virtual void PostMainMessageLoopStart() OVERRIDE;
29  virtual int PreCreateThreads() OVERRIDE;
30  virtual void PreMainMessageLoopRun() OVERRIDE;
31  virtual bool MainMessageLoopRun(int* result_code) OVERRIDE;
32  virtual void PostMainMessageLoopRun() OVERRIDE;
33
34 private:
35  scoped_ptr<CastBrowserProcess> cast_browser_process_;
36  const content::MainFunctionParams parameters_;  // For running browser tests.
37  URLRequestContextFactory* const url_request_context_factory_;
38
39  DISALLOW_COPY_AND_ASSIGN(CastBrowserMainParts);
40};
41
42}  // namespace shell
43}  // namespace chromecast
44
45#endif  // CHROMECAST_SHELL_BROWSER_CAST_BROWSER_MAIN_PARTS_H_
46