Refactor the logic for deciding whether to launch a browser into config (#4622)

This commit is contained in:
Marat Boshernitsan 2025-07-21 16:23:28 -07:00 committed by GitHub
parent 97cf26ec53
commit 5066bc5384
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 10 additions and 6 deletions

View File

@ -37,7 +37,6 @@ import {
logUserPrompt,
AuthType,
getOauthClient,
shouldAttemptBrowserLaunch,
} from '@google/gemini-cli-core';
import { validateAuthMethod } from './config/auth.js';
import { setMaxSizedBoxDebugging } from './ui/components/shared/MaxSizedBox.js';
@ -188,7 +187,7 @@ export async function main() {
if (
settings.merged.selectedAuthType === AuthType.LOGIN_WITH_GOOGLE &&
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
config.isBrowserLaunchSuppressed()
) {
// Do oauth before app renders to make copying the link possible.
await getOauthClient(settings.merged.selectedAuthType, config);

View File

@ -11,7 +11,6 @@ import {
Config,
clearCachedCredentialFile,
getErrorMessage,
shouldAttemptBrowserLaunch,
} from '@google/gemini-cli-core';
import { runExitCleanup } from '../../utils/cleanup.js';
@ -60,7 +59,7 @@ export const useAuthCommand = (
settings.setValue(scope, 'selectedAuthType', authType);
if (
authType === AuthType.LOGIN_WITH_GOOGLE &&
(config.getNoBrowser() || !shouldAttemptBrowserLaunch())
config.isBrowserLaunchSuppressed()
) {
runExitCleanup();
console.log(

View File

@ -38,6 +38,7 @@ vi.mock('../utils/browser.js', () => ({
const mockConfig = {
getNoBrowser: () => false,
getProxy: () => 'http://test.proxy.com:8080',
isBrowserLaunchSuppressed: () => false,
} as unknown as Config;
// Mock fetch globally
@ -180,6 +181,7 @@ describe('oauth2', () => {
const mockConfigWithNoBrowser = {
getNoBrowser: () => true,
getProxy: () => 'http://test.proxy.com:8080',
isBrowserLaunchSuppressed: () => true,
} as unknown as Config;
const mockCodeVerifier = {

View File

@ -26,7 +26,6 @@ import {
clearCachedGoogleAccount,
} from '../utils/user_account.js';
import { AuthType } from '../core/contentGenerator.js';
import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
import readline from 'node:readline';
// OAuth Client ID used to initiate OAuth2Client class.
@ -122,7 +121,7 @@ export async function getOauthClient(
}
}
if (config.getNoBrowser() || !shouldAttemptBrowserLaunch()) {
if (config.isBrowserLaunchSuppressed()) {
let success = false;
const maxRetries = 2;
for (let i = 0; !success && i < maxRetries; i++) {

View File

@ -44,6 +44,7 @@ import {
DEFAULT_GEMINI_FLASH_MODEL,
} from './models.js';
import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
export enum ApprovalMode {
DEFAULT = 'default',
@ -542,6 +543,10 @@ export class Config {
return this.noBrowser;
}
isBrowserLaunchSuppressed(): boolean {
return this.getNoBrowser() || !shouldAttemptBrowserLaunch();
}
getSummarizeToolOutputConfig():
| Record<string, SummarizeToolOutputSettings>
| undefined {