blob: a20e337d29ab40821d01b02b1acb759203dc1bf0 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// This file implements the input method candidate window used on Chrome OS.
#include "chrome/browser/ash/input_method/get_current_window_properties.h"
#include <optional>
#include "ash/public/cpp/window_properties.h"
#include "chrome/browser/ash/browser_delegate/browser_controller.h"
#include "chrome/browser/ash/browser_delegate/browser_delegate.h"
#include "components/exo/wm_helper.h"
#include "content/public/browser/web_contents.h"
#include "ui/aura/window.h"
#include "url/gurl.h"
namespace ash {
namespace input_method {
std::optional<GURL> GetFocusedTabUrl() {
ash::BrowserDelegate* browser =
ash::BrowserController::GetInstance()->GetLastUsedBrowser();
if (browser && browser->GetActiveWebContents()) {
return browser->GetActiveWebContents()->GetLastCommittedURL();
}
return std::nullopt;
}
WindowProperties GetFocusedWindowProperties() {
WindowProperties properties = {.app_id = "", .arc_package_name = ""};
if (!exo::WMHelper::HasInstance()) {
return properties;
}
auto* wm_helper = exo::WMHelper::GetInstance();
auto* window = wm_helper ? wm_helper->GetActiveWindow() : nullptr;
if (!window) {
return properties;
}
const std::string* arc_package_name =
window->GetProperty(ash::kArcPackageNameKey);
if (arc_package_name) {
properties.arc_package_name = *arc_package_name;
}
const std::string* app_id = window->GetProperty(ash::kAppIDKey);
if (app_id) {
properties.app_id = *app_id;
}
return properties;
}
} // namespace input_method
} // namespace ash