diff options
Diffstat (limited to 'toolkit/components/find/nsWebBrowserFind.h')
-rw-r--r-- | toolkit/components/find/nsWebBrowserFind.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/toolkit/components/find/nsWebBrowserFind.h b/toolkit/components/find/nsWebBrowserFind.h new file mode 100644 index 0000000000..0c846d2f17 --- /dev/null +++ b/toolkit/components/find/nsWebBrowserFind.h @@ -0,0 +1,97 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +#ifndef nsWebBrowserFindImpl_h__ +#define nsWebBrowserFindImpl_h__ + +#include "nsIWebBrowserFind.h" + +#include "nsCOMPtr.h" +#include "nsIWeakReferenceUtils.h" +#include "nsPIDOMWindow.h" + +#include "nsString.h" + +class nsIDOMWindow; +class nsIDocShell; +class nsRange; + +namespace mozilla { +namespace dom { +class Document; +class Element; +class Selection; +} // namespace dom +} // namespace mozilla + +//***************************************************************************** +// class nsWebBrowserFind +//***************************************************************************** + +class nsWebBrowserFind : public nsIWebBrowserFind, + public nsIWebBrowserFindInFrames { + public: + nsWebBrowserFind(); + + // nsISupports + NS_DECL_ISUPPORTS + + // nsIWebBrowserFind + NS_DECL_NSIWEBBROWSERFIND + + // nsIWebBrowserFindInFrames + NS_DECL_NSIWEBBROWSERFINDINFRAMES + + protected: + virtual ~nsWebBrowserFind(); + + bool CanFindNext() { return mSearchString.Length() != 0; } + + MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult + SearchInFrame(nsPIDOMWindowOuter* aWindow, bool aWrapping, bool* aDidFind); + + nsresult OnStartSearchFrame(nsPIDOMWindowOuter* aWindow); + nsresult OnEndSearchFrame(nsPIDOMWindowOuter* aWindow); + + already_AddRefed<mozilla::dom::Selection> GetFrameSelection( + nsPIDOMWindowOuter* aWindow); + MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult + ClearFrameSelection(nsPIDOMWindowOuter* aWindow); + + MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult OnFind(nsPIDOMWindowOuter* aFoundWindow); + + MOZ_CAN_RUN_SCRIPT_BOUNDARY void SetSelectionAndScroll( + nsPIDOMWindowOuter* aWindow, nsRange* aRange); + + nsresult GetRootNode(mozilla::dom::Document* aDomDoc, + mozilla::dom::Element** aNode); + nsresult GetSearchLimits(nsRange* aRange, nsRange* aStartPt, nsRange* aEndPt, + mozilla::dom::Document* aDoc, + mozilla::dom::Selection* aSel, bool aWrap); + nsresult SetRangeAroundDocument(nsRange* aSearchRange, nsRange* aStartPoint, + nsRange* aEndPoint, + mozilla::dom::Document* aDoc); + + protected: + nsString mSearchString; + + bool mFindBackwards; + bool mWrapFind; + bool mEntireWord; + bool mMatchCase; + bool mMatchDiacritics; + + bool mSearchSubFrames; + bool mSearchParentFrames; + + // These are all weak because who knows if windows can go away during our + // lifetime. + nsWeakPtr mCurrentSearchFrame; + nsWeakPtr mRootSearchFrame; + nsWeakPtr mLastFocusedWindow; +}; + +#endif |