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