nsresult nsTypeAheadFind::Init(nsIDocShell* aDocShell) { nsCOMPtr<nsIPrefBranch> prefInternal(do_GetService(NS_PREFSERVICE_CONTRACTID)); mSearchRange = nullptr; mStartPointRange = nullptr; mEndPointRange = nullptr; if (!prefInternal || !EnsureFind()) return NS_ERROR_FAILURE; SetDocShell(aDocShell); if (!mDidAddObservers) { mDidAddObservers = true; // ----------- Listen to prefs ------------------ nsresult rv = prefInternal->AddObserver("accessibility.browsewithcaret", this, true); NS_ENSURE_SUCCESS(rv, rv); // ----------- Get initial preferences ---------- PrefsReset(); nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); if (os) { os->AddObserver(this, DOM_WINDOW_DESTROYED_TOPIC, true); } } return NS_OK; }
nsresult nsTypeAheadFind::Init(nsIDocShell* aDocShell) { nsCOMPtr<nsIPrefBranch2> prefInternal(do_GetService(NS_PREFSERVICE_CONTRACTID)); mSearchRange = do_CreateInstance(kRangeCID); mStartPointRange = do_CreateInstance(kRangeCID); mEndPointRange = do_CreateInstance(kRangeCID); mFind = do_CreateInstance(NS_FIND_CONTRACTID); if (!prefInternal || !mSearchRange || !mStartPointRange || !mEndPointRange || !mFind) return NS_ERROR_FAILURE; SetDocShell(aDocShell); // ----------- Listen to prefs ------------------ nsresult rv = prefInternal->AddObserver("accessibility.browsewithcaret", this, PR_TRUE); NS_ENSURE_SUCCESS(rv, rv); // ----------- Get initial preferences ---------- PrefsReset(); // ----------- Set search options --------------- mFind->SetCaseSensitive(PR_FALSE); mFind->SetWordBreaker(nsnull); return rv; }
NS_IMETHODIMP nsTypeAheadFind::Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *aData) { if (!nsCRT::strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID)) return PrefsReset(); return NS_OK; }
NS_IMETHODIMP nsTypeAheadFind::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *aData) { if (!nsCRT::strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID)) { return PrefsReset(); } else if (!nsCRT::strcmp(aTopic, DOM_WINDOW_DESTROYED_TOPIC) && SameCOMIdentity(aSubject, mCurrentWindow)) { ReleaseStrongMemberVariables(); } return NS_OK; }
nsresult nsTypeAheadFind::Init(nsIDocShell* aDocShell) { nsCOMPtr<nsIPrefBranch> prefInternal(do_GetService(NS_PREFSERVICE_CONTRACTID)); mSearchRange = new nsRange(); mStartPointRange = new nsRange(); mEndPointRange = new nsRange(); if (!prefInternal || !EnsureFind()) return NS_ERROR_FAILURE; SetDocShell(aDocShell); // ----------- Listen to prefs ------------------ nsresult rv = prefInternal->AddObserver("accessibility.browsewithcaret", this, true); NS_ENSURE_SUCCESS(rv, rv); // ----------- Get initial preferences ---------- PrefsReset(); return rv; }