
There is only one remaining use of NotificationService which is pending removal [1]. In the meantime, we can start removing supporting code for NotificationService which is not needed for this remaining case. In particular: - Remove checks for a non-null NotificationService in code that otherwise doesn't use it. - NotificationService is no longer used on the IO thread, so we no longer create one there. - Move code that no longer needs to be in content public into the content Impl classes. - Remove code that's dead and trivial to remove or code that can be defaulted by the compiler. Note that some NotificationService functionality is now essentially dead code outside of unit tests, but this CL leaves the core implementation alone, given that's it's just going to be deleted entirely. [1] b/301214499 Bug: 40327896 Change-Id: Id70b6ead574d401f63b4d20b845b1c6e96b3b575 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5622038 Reviewed-by: Avi Drissman <avi@chromium.org> Commit-Queue: Kevin McNee <mcnee@chromium.org> Cr-Commit-Position: refs/heads/main@{#1314368}
87 lines
2.8 KiB
C++
87 lines
2.8 KiB
C++
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef CONTENT_BROWSER_BROWSER_PROCESS_IO_THREAD_H_
|
|
#define CONTENT_BROWSER_BROWSER_PROCESS_IO_THREAD_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "base/threading/thread.h"
|
|
#include "base/threading/thread_checker.h"
|
|
#include "build/build_config.h"
|
|
#include "content/common/content_export.h"
|
|
#include "content/public/browser/browser_thread.h"
|
|
|
|
#if BUILDFLAG(IS_WIN)
|
|
namespace base {
|
|
namespace win {
|
|
class ScopedCOMInitializer;
|
|
}
|
|
} // namespace base
|
|
#endif
|
|
|
|
namespace content {
|
|
class BrowserThreadImpl;
|
|
}
|
|
|
|
namespace content {
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// A BrowserProcessIOThread is a physical thread backing the IO thread.
|
|
//
|
|
// Applications must initialize the COM library before they can call
|
|
// COM library functions other than CoGetMalloc and memory allocation
|
|
// functions, so this class initializes COM for those users.
|
|
class CONTENT_EXPORT BrowserProcessIOThread : public base::Thread {
|
|
public:
|
|
// Constructs a BrowserProcessIOThread.
|
|
BrowserProcessIOThread();
|
|
|
|
BrowserProcessIOThread(const BrowserProcessIOThread&) = delete;
|
|
BrowserProcessIOThread& operator=(const BrowserProcessIOThread&) = delete;
|
|
|
|
~BrowserProcessIOThread() override;
|
|
|
|
// Registers this thread to represent the IO thread in the browser_thread.h
|
|
// API. This thread must already be running when this is called. This can only
|
|
// be called once per BrowserProcessIOThread instance.
|
|
void RegisterAsBrowserThread();
|
|
|
|
// Ideally there wouldn't be a special blanket allowance to block the
|
|
// BrowserThreads in tests but TestBrowserThreadImpl previously bypassed
|
|
// BrowserProcessIOThread and hence wasn't subject to ThreadRestrictions...
|
|
// Flipping that around in favor of explicit scoped allowances would be
|
|
// preferable but a non-trivial amount of work. Can only be called before
|
|
// starting this BrowserProcessIOThread.
|
|
void AllowBlockingForTesting();
|
|
|
|
static void ProcessHostCleanUp();
|
|
|
|
protected:
|
|
void Init() override;
|
|
void Run(base::RunLoop* run_loop) override;
|
|
void CleanUp() override;
|
|
|
|
private:
|
|
void IOThreadRun(base::RunLoop* run_loop);
|
|
|
|
// BrowserThreads are not allowed to do file I/O nor wait on synchronization
|
|
// primivives except when explicitly allowed in tests.
|
|
bool is_blocking_allowed_for_testing_ = false;
|
|
|
|
// The BrowserThread registration for this IO thread, initialized in
|
|
// RegisterAsBrowserThread().
|
|
std::unique_ptr<BrowserThreadImpl> browser_thread_;
|
|
|
|
#if BUILDFLAG(IS_WIN)
|
|
std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_;
|
|
#endif
|
|
|
|
THREAD_CHECKER(browser_thread_checker_);
|
|
};
|
|
|
|
} // namespace content
|
|
|
|
#endif // CONTENT_BROWSER_BROWSER_PROCESS_IO_THREAD_H_
|