blob: e35d6c6c4fc82e6ec95194b36127e6c3598fab39 [file] [log] [blame]
// Copyright 2019 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.
#include "services/shape_detection/barcode_detection_impl_mac_vision_api.h"
#include "base/logging.h"
#include "base/mac/sdk_forward_declarations.h"
namespace shape_detection {
namespace {
class VisionAPI : public VisionAPIInterface {
public:
VisionAPI() = default;
~VisionAPI() override = default;
NSArray* GetSupportedSymbologies() const override {
Class request_class = NSClassFromString(@"VNDetectBarcodesRequest");
if (!request_class) {
DPLOG(ERROR) << "Failed to load VNDetectBarcodesRequest class";
return [NSArray array];
}
SEL sel = NSSelectorFromString(@"supportedSymbologies");
id symbologies = [request_class performSelector:sel];
if (![symbologies isKindOfClass:[NSArray class]]) {
DLOG(ERROR)
<< "Failed to get NSArray of supportedSymbologies (wrong type)";
return [NSArray array];
}
return symbologies;
}
};
} // anonymous namespace
// static
std::unique_ptr<VisionAPIInterface> VisionAPIInterface::Create() {
return std::make_unique<VisionAPI>();
}
} // namespace shape_detection