OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/tabs/tabs_api.h" | 5 #include "chrome/browser/extensions/api/tabs/tabs_api.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <limits> | 9 #include <limits> |
10 #include <memory> | 10 #include <memory> |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 !is_panel; | 253 !is_panel; |
254 case windows::WINDOW_STATE_NORMAL: | 254 case windows::WINDOW_STATE_NORMAL: |
255 case windows::WINDOW_STATE_DOCKED: | 255 case windows::WINDOW_STATE_DOCKED: |
256 case windows::WINDOW_STATE_NONE: | 256 case windows::WINDOW_STATE_NONE: |
257 return true; | 257 return true; |
258 } | 258 } |
259 NOTREACHED(); | 259 NOTREACHED(); |
260 return true; | 260 return true; |
261 } | 261 } |
262 | 262 |
263 bool IsHangoutsExtensionId(const std::string& extension_id) { | |
264 for (const char* id : extension_misc::kHangoutsExtensionIds) { | |
265 if (extension_id == id) | |
266 return true; | |
267 } | |
268 return false; | |
269 } | |
270 | |
271 } // namespace | 263 } // namespace |
272 | 264 |
273 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, | 265 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, |
274 api::tabs::ZoomSettings* zoom_settings) { | 266 api::tabs::ZoomSettings* zoom_settings) { |
275 DCHECK(zoom_settings); | 267 DCHECK(zoom_settings); |
276 switch (zoom_mode) { | 268 switch (zoom_mode) { |
277 case ZoomController::ZOOM_MODE_DEFAULT: | 269 case ZoomController::ZOOM_MODE_DEFAULT: |
278 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC; | 270 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC; |
279 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN; | 271 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN; |
280 break; | 272 break; |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 | 501 |
510 if (!IsValidStateForWindowsCreateFunction(create_data)) { | 502 if (!IsValidStateForWindowsCreateFunction(create_data)) { |
511 error_ = keys::kInvalidWindowStateError; | 503 error_ = keys::kInvalidWindowStateError; |
512 return false; | 504 return false; |
513 } | 505 } |
514 | 506 |
515 Browser::Type window_type = Browser::TYPE_TABBED; | 507 Browser::Type window_type = Browser::TYPE_TABBED; |
516 | 508 |
517 #if defined(USE_ASH) | 509 #if defined(USE_ASH) |
518 bool create_ash_panel = false; | 510 bool create_ash_panel = false; |
| 511 bool saw_focus_key = false; |
519 #endif // defined(USE_ASH) | 512 #endif // defined(USE_ASH) |
520 | 513 |
521 gfx::Rect window_bounds; | 514 gfx::Rect window_bounds; |
522 bool focused = true; | 515 bool focused = true; |
523 bool saw_focus_key = false; | |
524 std::string extension_id; | 516 std::string extension_id; |
525 | 517 |
526 if (create_data) { | 518 if (create_data) { |
527 // Figure out window type before figuring out bounds so that default | 519 // Figure out window type before figuring out bounds so that default |
528 // bounds can be set according to the window type. | 520 // bounds can be set according to the window type. |
529 switch (create_data->type) { | 521 switch (create_data->type) { |
530 case windows::CREATE_TYPE_POPUP: | 522 case windows::CREATE_TYPE_POPUP: |
531 window_type = Browser::TYPE_POPUP; | 523 window_type = Browser::TYPE_POPUP; |
532 extension_id = extension()->id(); | 524 extension_id = extension()->id(); |
533 break; | 525 break; |
534 | 526 |
535 case windows::CREATE_TYPE_PANEL: | 527 case windows::CREATE_TYPE_PANEL: |
536 case windows::CREATE_TYPE_DETACHED_PANEL: { | 528 case windows::CREATE_TYPE_DETACHED_PANEL: { |
537 extension_id = extension()->id(); | 529 extension_id = extension()->id(); |
538 #if defined(USE_ASH) | 530 #if defined(USE_ASH) |
539 // Only ChromeOS' version of chrome.windows.create would create a panel | 531 // Only ChromeOS' version of chrome.windows.create would create a panel |
540 // window. It is whitelisted to Hangouts extension for limited time until | 532 // window. It is whitelisted to Hangouts extension for limited time until |
541 // it transitioned to other types of windows. | 533 // it transitioned to other types of windows. |
542 if (IsHangoutsExtensionId(extension_id)) { | 534 for (const char* id : extension_misc::kHangoutsExtensionIds) { |
543 create_ash_panel = true; | 535 if (extension_id == id) { |
544 break; | 536 create_ash_panel = true; |
| 537 break; |
| 538 } |
545 } | 539 } |
546 #endif // defined(USE_ASH) | 540 #endif // defined(USE_ASH) |
547 // Everything else gets POPUP instead of PANEL. | 541 // Everything else gets POPUP instead of PANEL. |
548 // TODO(dimich): Eventually, remove the 'panel' values form valid | 542 // TODO(dimich): Eventually, remove the 'panel' values form valid |
549 // window.create parameters. However, this is a more breaking change, so | 543 // window.create parameters. However, this is a more breaking change, so |
550 // for now simply treat it as a POPUP. | 544 // for now simply treat it as a POPUP. |
551 window_type = Browser::TYPE_POPUP; | 545 window_type = Browser::TYPE_POPUP; |
552 break; | 546 break; |
553 } | 547 } |
554 | 548 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 window_bounds.set_y(*create_data->top); | 580 window_bounds.set_y(*create_data->top); |
587 | 581 |
588 if (create_data->width) | 582 if (create_data->width) |
589 window_bounds.set_width(*create_data->width); | 583 window_bounds.set_width(*create_data->width); |
590 | 584 |
591 if (create_data->height) | 585 if (create_data->height) |
592 window_bounds.set_height(*create_data->height); | 586 window_bounds.set_height(*create_data->height); |
593 | 587 |
594 if (create_data->focused) { | 588 if (create_data->focused) { |
595 focused = *create_data->focused; | 589 focused = *create_data->focused; |
| 590 #if defined(USE_ASH) |
596 saw_focus_key = true; | 591 saw_focus_key = true; |
| 592 #endif |
597 } | 593 } |
598 } | 594 } |
599 | 595 |
600 #if defined(USE_ASH) | 596 #if defined(USE_ASH) |
601 if (create_ash_panel) { | 597 if (create_ash_panel) { |
602 if (urls.empty()) | 598 if (urls.empty()) |
603 urls.push_back(GURL(chrome::kChromeUINewTabURL)); | 599 urls.push_back(GURL(chrome::kChromeUINewTabURL)); |
604 | 600 |
605 AppWindow::CreateParams create_params; | 601 AppWindow::CreateParams create_params; |
606 create_params.window_type = AppWindow::WINDOW_TYPE_V1_PANEL; | 602 create_params.window_type = AppWindow::WINDOW_TYPE_V1_PANEL; |
(...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2187 params->tab_id | 2183 params->tab_id |
2188 ? ErrorUtils::FormatErrorMessage(keys::kCannotDiscardTab, | 2184 ? ErrorUtils::FormatErrorMessage(keys::kCannotDiscardTab, |
2189 base::IntToString(*params->tab_id)) | 2185 base::IntToString(*params->tab_id)) |
2190 : keys::kCannotFindTabToDiscard)); | 2186 : keys::kCannotFindTabToDiscard)); |
2191 } | 2187 } |
2192 | 2188 |
2193 TabsDiscardFunction::TabsDiscardFunction() {} | 2189 TabsDiscardFunction::TabsDiscardFunction() {} |
2194 TabsDiscardFunction::~TabsDiscardFunction() {} | 2190 TabsDiscardFunction::~TabsDiscardFunction() {} |
2195 | 2191 |
2196 } // namespace extensions | 2192 } // namespace extensions |
OLD | NEW |