15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A class with this type may be registered via
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// BrowserThread::SetDelegate.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// If registered as such, it will schedule to run Init() before the
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// message loop begins and the schedule InitAsync() as the first
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// task on its message loop (after the BrowserThread has done its own
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// initialization), and receive a CleanUp call right after the message
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// loop ends (and before the BrowserThread has done its own clean-up).
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserThreadDelegate {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~BrowserThreadDelegate() {}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Called prior to starting the message loop
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Init() = 0;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Called as the first task on the thread's message loop.
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void InitAsync() = 0;
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called just after the message loop ends.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CleanUp() = 0;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_BROWSER_THREAD_DELEGATE_H_
35