michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "inSearchLoop.h" michael@0: michael@0: #include "nsITimer.h" michael@0: #include "nsIServiceManager.h" michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: inSearchLoop::inSearchLoop(inISearchProcess* aSearchProcess) michael@0: { michael@0: mSearchProcess = aSearchProcess; michael@0: nsresult rv; michael@0: mTimer = do_CreateInstance("@mozilla.org/timer;1", &rv); michael@0: } michael@0: michael@0: inSearchLoop::~inSearchLoop() michael@0: { michael@0: } michael@0: michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: // inSearchLoop michael@0: michael@0: nsresult michael@0: inSearchLoop::Start() michael@0: { michael@0: mTimer->InitWithFuncCallback(inSearchLoop::TimerCallback, (void*)this, 0, nsITimer::TYPE_REPEATING_SLACK); michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: nsresult michael@0: inSearchLoop::Step() michael@0: { michael@0: bool done = false; michael@0: mSearchProcess->SearchStep(&done); michael@0: michael@0: if (done) michael@0: Stop(); michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: nsresult michael@0: inSearchLoop::Stop() michael@0: { michael@0: mTimer->Cancel(); michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: void michael@0: inSearchLoop::TimerCallback(nsITimer *aTimer, void *aClosure) michael@0: { michael@0: inSearchLoop* loop = (inSearchLoop*) aClosure; michael@0: loop->Step(); michael@0: }