summaryrefslogtreecommitdiffstats
path: root/layout/inspector/inSearchLoop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layout/inspector/inSearchLoop.cpp')
-rw-r--r--layout/inspector/inSearchLoop.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/layout/inspector/inSearchLoop.cpp b/layout/inspector/inSearchLoop.cpp
new file mode 100644
index 000000000..a2e46b932
--- /dev/null
+++ b/layout/inspector/inSearchLoop.cpp
@@ -0,0 +1,58 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "inSearchLoop.h"
+
+#include "nsITimer.h"
+#include "nsIServiceManager.h"
+///////////////////////////////////////////////////////////////////////////////
+
+inSearchLoop::inSearchLoop(inISearchProcess* aSearchProcess)
+{
+ mSearchProcess = aSearchProcess;
+ nsresult rv;
+ mTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
+}
+
+inSearchLoop::~inSearchLoop()
+{
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// inSearchLoop
+
+nsresult
+inSearchLoop::Start()
+{
+ mTimer->InitWithFuncCallback(inSearchLoop::TimerCallback, (void*)this, 0, nsITimer::TYPE_REPEATING_SLACK);
+
+ return NS_OK;
+}
+
+nsresult
+inSearchLoop::Step()
+{
+ bool done = false;
+ mSearchProcess->SearchStep(&done);
+
+ if (done)
+ Stop();
+
+ return NS_OK;
+}
+
+nsresult
+inSearchLoop::Stop()
+{
+ mTimer->Cancel();
+
+ return NS_OK;
+}
+
+void
+inSearchLoop::TimerCallback(nsITimer *aTimer, void *aClosure)
+{
+ inSearchLoop* loop = (inSearchLoop*) aClosure;
+ loop->Step();
+}