fix: segfault in SerialChooserController (#25969)
* fix: segfault in SerialChooserController * Remove temporary testing
This commit is contained in:
parent
6a0221297e
commit
87d3f3584c
2 changed files with 4 additions and 12 deletions
|
@ -77,11 +77,13 @@ SerialChooserController::SerialChooserController(
|
||||||
DCHECK(chooser_context_);
|
DCHECK(chooser_context_);
|
||||||
chooser_context_->GetPortManager()->GetDevices(base::BindOnce(
|
chooser_context_->GetPortManager()->GetDevices(base::BindOnce(
|
||||||
&SerialChooserController::OnGetDevices, weak_factory_.GetWeakPtr()));
|
&SerialChooserController::OnGetDevices, weak_factory_.GetWeakPtr()));
|
||||||
observer_.Add(chooser_context_.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SerialChooserController::~SerialChooserController() {
|
SerialChooserController::~SerialChooserController() {
|
||||||
RunCallback(/*port=*/nullptr);
|
RunCallback(/*port=*/nullptr);
|
||||||
|
if (chooser_context_) {
|
||||||
|
chooser_context_->RemovePortObserver(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
api::Session* SerialChooserController::GetSession() {
|
api::Session* SerialChooserController::GetSession() {
|
||||||
|
@ -114,10 +116,6 @@ void SerialChooserController::OnPortRemoved(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SerialChooserController::OnPortManagerConnectionError() {
|
|
||||||
observer_.RemoveAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialChooserController::OnDeviceChosen(const std::string& port_id) {
|
void SerialChooserController::OnDeviceChosen(const std::string& port_id) {
|
||||||
if (port_id.empty()) {
|
if (port_id.empty()) {
|
||||||
RunCallback(/*port=*/nullptr);
|
RunCallback(/*port=*/nullptr);
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/weak_ptr.h"
|
#include "base/memory/weak_ptr.h"
|
||||||
#include "base/scoped_observer.h"
|
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "content/public/browser/serial_chooser.h"
|
#include "content/public/browser/serial_chooser.h"
|
||||||
#include "content/public/browser/web_contents.h"
|
#include "content/public/browser/web_contents.h"
|
||||||
|
@ -44,7 +43,7 @@ class SerialChooserController final : public SerialChooserContext::PortObserver,
|
||||||
// SerialChooserContext::PortObserver:
|
// SerialChooserContext::PortObserver:
|
||||||
void OnPortAdded(const device::mojom::SerialPortInfo& port) override;
|
void OnPortAdded(const device::mojom::SerialPortInfo& port) override;
|
||||||
void OnPortRemoved(const device::mojom::SerialPortInfo& port) override;
|
void OnPortRemoved(const device::mojom::SerialPortInfo& port) override;
|
||||||
void OnPortManagerConnectionError() override;
|
void OnPortManagerConnectionError() override {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
api::Session* GetSession();
|
api::Session* GetSession();
|
||||||
|
@ -59,11 +58,6 @@ class SerialChooserController final : public SerialChooserContext::PortObserver,
|
||||||
url::Origin embedding_origin_;
|
url::Origin embedding_origin_;
|
||||||
|
|
||||||
base::WeakPtr<SerialChooserContext> chooser_context_;
|
base::WeakPtr<SerialChooserContext> chooser_context_;
|
||||||
ScopedObserver<SerialChooserContext,
|
|
||||||
SerialChooserContext::PortObserver,
|
|
||||||
&SerialChooserContext::AddPortObserver,
|
|
||||||
&SerialChooserContext::RemovePortObserver>
|
|
||||||
observer_{this};
|
|
||||||
|
|
||||||
std::vector<device::mojom::SerialPortInfoPtr> ports_;
|
std::vector<device::mojom::SerialPortInfoPtr> ports_;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue