fune/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.h
Gabriele Svelto 5dc21d568c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in modules/, netwerk/, parser/, security/, startupcache/, storage/, toolkit/, tools/, uriloader/, widget/, xpcom/ and xpfe/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55444

--HG--
extra : moz-landing-system : lando
2019-12-06 09:17:57 +00:00

91 lines
3.1 KiB
C++

//* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=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 nsUrlClassifierPrefixSet_h_
#define nsUrlClassifierPrefixSet_h_
#include "nsISupportsUtils.h"
#include "nsID.h"
#include "nsIMemoryReporter.h"
#include "nsIUrlClassifierPrefixSet.h"
#include "nsTArray.h"
#include "nsToolkitCompsCID.h"
#include "mozilla/FileUtils.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/Mutex.h"
#include "mozilla/Poison.h"
class nsIInputStream;
class nsIOutputStream;
namespace mozilla {
namespace safebrowsing {
class VariableLengthPrefixSet;
} // namespace safebrowsing
} // namespace mozilla
class nsUrlClassifierPrefixSet final : public nsIUrlClassifierPrefixSet,
public nsIMemoryReporter {
public:
nsUrlClassifierPrefixSet();
NS_IMETHOD Init(const nsACString& aName) override;
NS_IMETHOD SetPrefixes(const uint32_t* aArray, uint32_t aLength) override;
NS_IMETHOD GetPrefixes(uint32_t* aCount, uint32_t** aPrefixes) override;
NS_IMETHOD Contains(uint32_t aPrefix, bool* aFound) override;
NS_IMETHOD IsEmpty(bool* aEmpty) override;
nsresult GetPrefixesNative(FallibleTArray<uint32_t>& outArray);
nsresult WritePrefixes(nsCOMPtr<nsIOutputStream>& out) const;
nsresult LoadPrefixes(nsCOMPtr<nsIInputStream>& in);
uint32_t CalculatePreallocateSize() const;
size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) const;
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSIMEMORYREPORTER
friend class mozilla::safebrowsing::VariableLengthPrefixSet;
private:
virtual ~nsUrlClassifierPrefixSet();
static const uint32_t DELTAS_LIMIT = 120;
static const uint32_t MAX_INDEX_DIFF = (1 << 16);
static const uint32_t PREFIXSET_VERSION_MAGIC = 1;
void Clear();
nsresult MakePrefixSet(const uint32_t* aArray, uint32_t aLength);
uint32_t BinSearch(uint32_t start, uint32_t end, uint32_t target) const;
bool IsEmptyInternal() const;
// Lock to prevent races between the url-classifier thread (which does most
// of the operations) and the main thread (which does memory reporting).
// It should be held for all operations between Init() and destruction that
// touch this class's data members.
mutable mozilla::Mutex mLock;
// list of fully stored prefixes, that also form the
// start of a run of deltas in mIndexDeltas.
nsTArray<uint32_t> mIndexPrefixes;
// array containing arrays of deltas from indices.
// Index to the place that matches the closest lower
// prefix from mIndexPrefix. Then every "delta" corresponds
// to a prefix in the PrefixSet.
// This array could be empty when we decide to store all the prefixes
// in mIndexPrefixes.
nsTArray<nsTArray<uint16_t> > mIndexDeltas;
// how many prefixes we have.
uint32_t mTotalPrefixes;
nsCString mName;
nsCString mMemoryReportPath;
mozilla::CorruptionCanary mCanary;
};
#endif