| Index: blimp/client/core/geolocation/geolocation_feature.cc
|
| diff --git a/blimp/client/core/geolocation/geolocation_feature.cc b/blimp/client/core/geolocation/geolocation_feature.cc
|
| deleted file mode 100644
|
| index 012e0fdce8f8c040270bf8b1816249bfd34887e2..0000000000000000000000000000000000000000
|
| --- a/blimp/client/core/geolocation/geolocation_feature.cc
|
| +++ /dev/null
|
| @@ -1,156 +0,0 @@
|
| -// Copyright 2016 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 "blimp/client/core/geolocation/geolocation_feature.h"
|
| -
|
| -#include <memory>
|
| -#include <string>
|
| -#include <utility>
|
| -
|
| -#include "blimp/common/create_blimp_message.h"
|
| -#include "blimp/common/proto/blimp_message.pb.h"
|
| -#include "device/geolocation/geoposition.h"
|
| -#include "device/geolocation/location_provider.h"
|
| -#include "net/base/net_errors.h"
|
| -
|
| -namespace blimp {
|
| -namespace client {
|
| -
|
| -GeolocationFeature::GeolocationFeature(
|
| - std::unique_ptr<device::LocationProvider> location_provider)
|
| - : location_provider_(std::move(location_provider)) {
|
| - location_provider_->SetUpdateCallback(base::Bind(
|
| - &GeolocationFeature::OnLocationUpdate, base::Unretained(this)));
|
| -}
|
| -
|
| -GeolocationFeature::~GeolocationFeature() {}
|
| -
|
| -void GeolocationFeature::set_outgoing_message_processor(
|
| - std::unique_ptr<BlimpMessageProcessor> processor) {
|
| - outgoing_message_processor_ = std::move(processor);
|
| - am_sending_message_ = false;
|
| -}
|
| -
|
| -void GeolocationFeature::ProcessMessage(
|
| - std::unique_ptr<BlimpMessage> message,
|
| - const net::CompletionCallback& callback) {
|
| - DCHECK_EQ(BlimpMessage::kGeolocation, message->feature_case());
|
| -
|
| - int result = net::OK;
|
| - const GeolocationMessage& geolocation_message = message->geolocation();
|
| - switch (geolocation_message.type_case()) {
|
| - case GeolocationMessage::kSetInterestLevel:
|
| - SetInterestLevel(geolocation_message.set_interest_level().level());
|
| - break;
|
| - case GeolocationMessage::kRequestRefresh:
|
| - location_provider_->OnPermissionGranted();
|
| - break;
|
| - case GeolocationMessage::kCoordinates:
|
| - case GeolocationMessage::kError:
|
| - case GeolocationMessage::TYPE_NOT_SET:
|
| - result = net::ERR_UNEXPECTED;
|
| - break;
|
| - }
|
| -
|
| - if (!callback.is_null()) {
|
| - callback.Run(result);
|
| - }
|
| -}
|
| -
|
| -void GeolocationFeature::OnLocationUpdate(
|
| - const device::LocationProvider* location_provider,
|
| - const device::Geoposition& position) {
|
| - DCHECK_EQ(location_provider_.get(), location_provider);
|
| -
|
| - if (!am_sending_message_) {
|
| - switch (position.error_code) {
|
| - case device::Geoposition::ERROR_CODE_NONE:
|
| - SendGeolocationPositionMessage(position);
|
| - break;
|
| - case device::Geoposition::ErrorCode::ERROR_CODE_PERMISSION_DENIED:
|
| - SendGeolocationErrorMessage(GeolocationErrorMessage::PERMISSION_DENIED,
|
| - position.error_message);
|
| - break;
|
| - case device::Geoposition::ErrorCode::ERROR_CODE_POSITION_UNAVAILABLE:
|
| - SendGeolocationErrorMessage(
|
| - GeolocationErrorMessage::POSITION_UNAVAILABLE,
|
| - position.error_message);
|
| - break;
|
| - case device::Geoposition::ErrorCode::ERROR_CODE_TIMEOUT:
|
| - SendGeolocationErrorMessage(GeolocationErrorMessage::TIMEOUT,
|
| - position.error_message);
|
| - break;
|
| - }
|
| - } else {
|
| - need_to_send_message_ = true;
|
| - }
|
| -}
|
| -
|
| -void GeolocationFeature::SetInterestLevel(
|
| - GeolocationSetInterestLevelMessage::Level level) {
|
| - switch (level) {
|
| - case GeolocationSetInterestLevelMessage::HIGH_ACCURACY:
|
| - location_provider_->StartProvider(true);
|
| - break;
|
| - case GeolocationSetInterestLevelMessage::LOW_ACCURACY:
|
| - location_provider_->StartProvider(false);
|
| - break;
|
| - case GeolocationSetInterestLevelMessage::NO_INTEREST:
|
| - location_provider_->StopProvider();
|
| - break;
|
| - }
|
| -}
|
| -
|
| -void GeolocationFeature::SendGeolocationPositionMessage(
|
| - const device::Geoposition& position) {
|
| - GeolocationMessage* geolocation_message = nullptr;
|
| - std::unique_ptr<BlimpMessage> blimp_message =
|
| - CreateBlimpMessage(&geolocation_message);
|
| -
|
| - GeolocationCoordinatesMessage* coordinates =
|
| - geolocation_message->mutable_coordinates();
|
| - coordinates->set_latitude(position.latitude);
|
| - coordinates->set_longitude(position.longitude);
|
| - coordinates->set_altitude(position.altitude);
|
| - coordinates->set_accuracy(position.accuracy);
|
| - coordinates->set_altitude_accuracy(position.altitude_accuracy);
|
| - coordinates->set_heading(position.heading);
|
| - coordinates->set_speed(position.speed);
|
| -
|
| - am_sending_message_ = true;
|
| - outgoing_message_processor_->ProcessMessage(
|
| - std::move(blimp_message),
|
| - base::Bind(&GeolocationFeature::OnSendComplete, base::Unretained(this)));
|
| -}
|
| -
|
| -void GeolocationFeature::SendGeolocationErrorMessage(
|
| - GeolocationErrorMessage::ErrorCode error_code,
|
| - const std::string& error_message) {
|
| - GeolocationMessage* geolocation_message = nullptr;
|
| - std::unique_ptr<BlimpMessage> blimp_message =
|
| - CreateBlimpMessage(&geolocation_message);
|
| -
|
| - GeolocationErrorMessage* error = geolocation_message->mutable_error();
|
| - error->set_error_code(error_code);
|
| - error->set_error_message(error_message);
|
| -
|
| - am_sending_message_ = true;
|
| - outgoing_message_processor_->ProcessMessage(
|
| - std::move(blimp_message),
|
| - base::Bind(&GeolocationFeature::OnSendComplete, base::Unretained(this)));
|
| -}
|
| -
|
| -void GeolocationFeature::OnSendComplete(int result) {
|
| - am_sending_message_ = false;
|
| - if (need_to_send_message_) {
|
| - device::Geoposition new_position = location_provider_->GetPosition();
|
| - if (new_position.Validate()) {
|
| - OnLocationUpdate(location_provider_.get(), new_position);
|
| - }
|
| - need_to_send_message_ = false;
|
| - }
|
| -}
|
| -
|
| -} // namespace client
|
| -} // namespace blimp
|
|
|