blob: 5b15bfc67d747d5703feee9750d0541ff3c4a639 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "chrome/updater/server/mac/server.h"
#import <Foundation/Foundation.h>
#include <xpc/xpc.h>
#include "base/mac/scoped_nsobject.h"
#include "base/memory/ref_counted.h"
#include "chrome/updater/app/app.h"
#import "chrome/updater/configurator.h"
#import "chrome/updater/mac/xpc_service_names.h"
#include "chrome/updater/server/mac/service_delegate.h"
#include "chrome/updater/update_service_in_process.h"
namespace updater {
class AppServer : public App {
public:
AppServer();
private:
~AppServer() override;
void Initialize() override;
void FirstTaskRun() override;
scoped_refptr<Configurator> config_;
base::scoped_nsobject<CRUUpdateCheckXPCServiceDelegate> delegate_;
base::scoped_nsobject<NSXPCListener> listener_;
};
AppServer::AppServer() = default;
AppServer::~AppServer() = default;
void AppServer::Initialize() {
config_ = base::MakeRefCounted<Configurator>();
}
void AppServer::FirstTaskRun() {
@autoreleasepool {
delegate_.reset([[CRUUpdateCheckXPCServiceDelegate alloc]
initWithUpdateService:base::MakeRefCounted<UpdateServiceInProcess>(
config_)]);
listener_.reset([[NSXPCListener alloc]
initWithMachServiceName:GetGoogleUpdateServiceMachName().get()]);
listener_.get().delegate = delegate_.get();
[listener_ resume];
}
}
scoped_refptr<App> AppServerInstance() {
return AppInstance<AppServer>();
}
} // namespace updater