| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 } | 181 } |
| 182 } | 182 } |
| 183 | 183 |
| 184 } // namespace | 184 } // namespace |
| 185 | 185 |
| 186 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, | 186 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, |
| 187 api::tabs::ZoomSettings* zoom_settings) { | 187 api::tabs::ZoomSettings* zoom_settings) { |
| 188 DCHECK(zoom_settings); | 188 DCHECK(zoom_settings); |
| 189 switch (zoom_mode) { | 189 switch (zoom_mode) { |
| 190 case ZoomController::ZOOM_MODE_DEFAULT: | 190 case ZoomController::ZOOM_MODE_DEFAULT: |
| 191 zoom_settings->mode = api::tabs::ZoomSettings::MODE_AUTOMATIC; | 191 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC; |
| 192 zoom_settings->scope = api::tabs::ZoomSettings::SCOPE_PER_ORIGIN; | 192 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN; |
| 193 break; | 193 break; |
| 194 case ZoomController::ZOOM_MODE_ISOLATED: | 194 case ZoomController::ZOOM_MODE_ISOLATED: |
| 195 zoom_settings->mode = api::tabs::ZoomSettings::MODE_AUTOMATIC; | 195 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC; |
| 196 zoom_settings->scope = api::tabs::ZoomSettings::SCOPE_PER_TAB; | 196 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_TAB; |
| 197 break; | 197 break; |
| 198 case ZoomController::ZOOM_MODE_MANUAL: | 198 case ZoomController::ZOOM_MODE_MANUAL: |
| 199 zoom_settings->mode = api::tabs::ZoomSettings::MODE_MANUAL; | 199 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_MANUAL; |
| 200 zoom_settings->scope = api::tabs::ZoomSettings::SCOPE_PER_TAB; | 200 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_TAB; |
| 201 break; | 201 break; |
| 202 case ZoomController::ZOOM_MODE_DISABLED: | 202 case ZoomController::ZOOM_MODE_DISABLED: |
| 203 zoom_settings->mode = api::tabs::ZoomSettings::MODE_DISABLED; | 203 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_DISABLED; |
| 204 zoom_settings->scope = api::tabs::ZoomSettings::SCOPE_PER_TAB; | 204 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_TAB; |
| 205 break; | 205 break; |
| 206 } | 206 } |
| 207 } | 207 } |
| 208 | 208 |
| 209 // Windows --------------------------------------------------------------------- | 209 // Windows --------------------------------------------------------------------- |
| 210 | 210 |
| 211 bool WindowsGetFunction::RunSync() { | 211 bool WindowsGetFunction::RunSync() { |
| 212 scoped_ptr<windows::Get::Params> params(windows::Get::Params::Create(*args_)); | 212 scoped_ptr<windows::Get::Params> params(windows::Get::Params::Create(*args_)); |
| 213 EXTENSION_FUNCTION_VALIDATE(params.get()); | 213 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 214 | 214 |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 return false; | 425 return false; |
| 426 } | 426 } |
| 427 if (open_incognito_window) { | 427 if (open_incognito_window) { |
| 428 window_profile = window_profile->GetOffTheRecordProfile(); | 428 window_profile = window_profile->GetOffTheRecordProfile(); |
| 429 } | 429 } |
| 430 | 430 |
| 431 if (create_data) { | 431 if (create_data) { |
| 432 // Figure out window type before figuring out bounds so that default | 432 // Figure out window type before figuring out bounds so that default |
| 433 // bounds can be set according to the window type. | 433 // bounds can be set according to the window type. |
| 434 switch (create_data->type) { | 434 switch (create_data->type) { |
| 435 case windows::Create::Params::CreateData::TYPE_POPUP: | 435 case windows::CREATE_TYPE_POPUP: |
| 436 window_type = Browser::TYPE_POPUP; | 436 window_type = Browser::TYPE_POPUP; |
| 437 extension_id = extension()->id(); | 437 extension_id = extension()->id(); |
| 438 break; | 438 break; |
| 439 case windows::Create::Params::CreateData::TYPE_PANEL: | 439 case windows::CREATE_TYPE_PANEL: |
| 440 case windows::Create::Params::CreateData::TYPE_DETACHED_PANEL: { | 440 case windows::CREATE_TYPE_DETACHED_PANEL: { |
| 441 extension_id = extension()->id(); | 441 extension_id = extension()->id(); |
| 442 bool use_panels = PanelManager::ShouldUsePanels(extension_id); | 442 bool use_panels = PanelManager::ShouldUsePanels(extension_id); |
| 443 if (use_panels) { | 443 if (use_panels) { |
| 444 create_panel = true; | 444 create_panel = true; |
| 445 // Non-ash supports both docked and detached panel types. | 445 // Non-ash supports both docked and detached panel types. |
| 446 if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_ASH && | 446 if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_ASH && |
| 447 create_data->type == | 447 create_data->type == windows::CREATE_TYPE_DETACHED_PANEL) { |
| 448 windows::Create::Params::CreateData::TYPE_DETACHED_PANEL) { | |
| 449 panel_create_mode = PanelManager::CREATE_AS_DETACHED; | 448 panel_create_mode = PanelManager::CREATE_AS_DETACHED; |
| 450 } | 449 } |
| 451 } else { | 450 } else { |
| 452 window_type = Browser::TYPE_POPUP; | 451 window_type = Browser::TYPE_POPUP; |
| 453 } | 452 } |
| 454 break; | 453 break; |
| 455 } | 454 } |
| 456 case windows::Create::Params::CreateData::TYPE_NONE: | 455 case windows::CREATE_TYPE_NONE: |
| 457 case windows::Create::Params::CreateData::TYPE_NORMAL: | 456 case windows::CREATE_TYPE_NORMAL: |
| 458 break; | 457 break; |
| 459 default: | 458 default: |
| 460 error_ = keys::kInvalidWindowTypeError; | 459 error_ = keys::kInvalidWindowTypeError; |
| 461 return false; | 460 return false; |
| 462 } | 461 } |
| 463 | 462 |
| 464 // Initialize default window bounds according to window type. | 463 // Initialize default window bounds according to window type. |
| 465 if (window_type == Browser::TYPE_TABBED || | 464 if (window_type == Browser::TYPE_TABBED || |
| 466 window_type == Browser::TYPE_POPUP || | 465 window_type == Browser::TYPE_POPUP || |
| 467 create_panel) { | 466 create_panel) { |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 windows::Update::Params::Create(*args_)); | 618 windows::Update::Params::Create(*args_)); |
| 620 EXTENSION_FUNCTION_VALIDATE(params); | 619 EXTENSION_FUNCTION_VALIDATE(params); |
| 621 | 620 |
| 622 WindowController* controller; | 621 WindowController* controller; |
| 623 if (!windows_util::GetWindowFromWindowID(this, params->window_id, | 622 if (!windows_util::GetWindowFromWindowID(this, params->window_id, |
| 624 &controller)) | 623 &controller)) |
| 625 return false; | 624 return false; |
| 626 | 625 |
| 627 ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT; // No change. | 626 ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT; // No change. |
| 628 switch (params->update_info.state) { | 627 switch (params->update_info.state) { |
| 629 case windows::Update::Params::UpdateInfo::STATE_NORMAL: | 628 case windows::WINDOW_STATE_NORMAL: |
| 630 show_state = ui::SHOW_STATE_NORMAL; | 629 show_state = ui::SHOW_STATE_NORMAL; |
| 631 break; | 630 break; |
| 632 case windows::Update::Params::UpdateInfo::STATE_MINIMIZED: | 631 case windows::WINDOW_STATE_MINIMIZED: |
| 633 show_state = ui::SHOW_STATE_MINIMIZED; | 632 show_state = ui::SHOW_STATE_MINIMIZED; |
| 634 break; | 633 break; |
| 635 case windows::Update::Params::UpdateInfo::STATE_MAXIMIZED: | 634 case windows::WINDOW_STATE_MAXIMIZED: |
| 636 show_state = ui::SHOW_STATE_MAXIMIZED; | 635 show_state = ui::SHOW_STATE_MAXIMIZED; |
| 637 break; | 636 break; |
| 638 case windows::Update::Params::UpdateInfo::STATE_FULLSCREEN: | 637 case windows::WINDOW_STATE_FULLSCREEN: |
| 639 show_state = ui::SHOW_STATE_FULLSCREEN; | 638 show_state = ui::SHOW_STATE_FULLSCREEN; |
| 640 break; | 639 break; |
| 641 case windows::Update::Params::UpdateInfo::STATE_NONE: | 640 case windows::WINDOW_STATE_NONE: |
| 642 break; | 641 break; |
| 643 default: | 642 default: |
| 644 error_ = keys::kInvalidWindowStateError; | 643 error_ = keys::kInvalidWindowStateError; |
| 645 return false; | 644 return false; |
| 646 } | 645 } |
| 647 | 646 |
| 648 if (show_state != ui::SHOW_STATE_FULLSCREEN && | 647 if (show_state != ui::SHOW_STATE_FULLSCREEN && |
| 649 show_state != ui::SHOW_STATE_DEFAULT) | 648 show_state != ui::SHOW_STATE_DEFAULT) |
| 650 controller->SetFullscreenMode(false, extension()->url()); | 649 controller->SetFullscreenMode(false, extension()->url()); |
| 651 | 650 |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 | 795 |
| 797 SetResult(ExtensionTabUtil::CreateTabList(browser, extension())); | 796 SetResult(ExtensionTabUtil::CreateTabList(browser, extension())); |
| 798 | 797 |
| 799 return true; | 798 return true; |
| 800 } | 799 } |
| 801 | 800 |
| 802 bool TabsQueryFunction::RunSync() { | 801 bool TabsQueryFunction::RunSync() { |
| 803 scoped_ptr<tabs::Query::Params> params(tabs::Query::Params::Create(*args_)); | 802 scoped_ptr<tabs::Query::Params> params(tabs::Query::Params::Create(*args_)); |
| 804 EXTENSION_FUNCTION_VALIDATE(params.get()); | 803 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 805 | 804 |
| 806 bool loading_status_set = params->query_info.status != | 805 bool loading_status_set = params->query_info.status != tabs::TAB_STATUS_NONE; |
| 807 tabs::Query::Params::QueryInfo::STATUS_NONE; | 806 bool loading = params->query_info.status == tabs::TAB_STATUS_LOADING; |
| 808 bool loading = params->query_info.status == | |
| 809 tabs::Query::Params::QueryInfo::STATUS_LOADING; | |
| 810 | 807 |
| 811 URLPatternSet url_patterns; | 808 URLPatternSet url_patterns; |
| 812 if (params->query_info.url.get()) { | 809 if (params->query_info.url.get()) { |
| 813 std::vector<std::string> url_pattern_strings; | 810 std::vector<std::string> url_pattern_strings; |
| 814 if (params->query_info.url->as_string) | 811 if (params->query_info.url->as_string) |
| 815 url_pattern_strings.push_back(*params->query_info.url->as_string); | 812 url_pattern_strings.push_back(*params->query_info.url->as_string); |
| 816 else if (params->query_info.url->as_strings) | 813 else if (params->query_info.url->as_strings) |
| 817 url_pattern_strings.swap(*params->query_info.url->as_strings); | 814 url_pattern_strings.swap(*params->query_info.url->as_strings); |
| 818 // It is o.k. to use URLPattern::SCHEME_ALL here because this function does | 815 // It is o.k. to use URLPattern::SCHEME_ALL here because this function does |
| 819 // not grant access to the content of the tabs, only to seeing their URLs | 816 // not grant access to the content of the tabs, only to seeing their URLs |
| (...skipping 10 matching lines...) Expand all Loading... |
| 830 | 827 |
| 831 int window_id = extension_misc::kUnknownWindowId; | 828 int window_id = extension_misc::kUnknownWindowId; |
| 832 if (params->query_info.window_id.get()) | 829 if (params->query_info.window_id.get()) |
| 833 window_id = *params->query_info.window_id; | 830 window_id = *params->query_info.window_id; |
| 834 | 831 |
| 835 int index = -1; | 832 int index = -1; |
| 836 if (params->query_info.index.get()) | 833 if (params->query_info.index.get()) |
| 837 index = *params->query_info.index; | 834 index = *params->query_info.index; |
| 838 | 835 |
| 839 std::string window_type; | 836 std::string window_type; |
| 840 if (params->query_info.window_type != | 837 if (params->query_info.window_type != tabs::WINDOW_TYPE_NONE) |
| 841 tabs::Query::Params::QueryInfo::WINDOW_TYPE_NONE) { | 838 window_type = tabs::ToString(params->query_info.window_type); |
| 842 window_type = tabs::Query::Params::QueryInfo::ToString( | |
| 843 params->query_info.window_type); | |
| 844 } | |
| 845 | 839 |
| 846 base::ListValue* result = new base::ListValue(); | 840 base::ListValue* result = new base::ListValue(); |
| 847 Browser* last_active_browser = chrome::FindAnyBrowser( | 841 Browser* last_active_browser = chrome::FindAnyBrowser( |
| 848 GetProfile(), include_incognito(), chrome::GetActiveDesktop()); | 842 GetProfile(), include_incognito(), chrome::GetActiveDesktop()); |
| 849 Browser* current_browser = GetCurrentBrowser(); | 843 Browser* current_browser = GetCurrentBrowser(); |
| 850 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 844 for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
| 851 Browser* browser = *it; | 845 Browser* browser = *it; |
| 852 if (!GetProfile()->IsSameProfile(browser->profile())) | 846 if (!GetProfile()->IsSameProfile(browser->profile())) |
| 853 continue; | 847 continue; |
| 854 | 848 |
| (...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1898 int tab_id = params->tab_id ? *params->tab_id : -1; | 1892 int tab_id = params->tab_id ? *params->tab_id : -1; |
| 1899 WebContents* web_contents = GetWebContents(tab_id); | 1893 WebContents* web_contents = GetWebContents(tab_id); |
| 1900 if (!web_contents) | 1894 if (!web_contents) |
| 1901 return false; | 1895 return false; |
| 1902 | 1896 |
| 1903 GURL url(web_contents->GetVisibleURL()); | 1897 GURL url(web_contents->GetVisibleURL()); |
| 1904 if (PermissionsData::IsRestrictedUrl(url, url, extension(), &error_)) | 1898 if (PermissionsData::IsRestrictedUrl(url, url, extension(), &error_)) |
| 1905 return false; | 1899 return false; |
| 1906 | 1900 |
| 1907 // "per-origin" scope is only available in "automatic" mode. | 1901 // "per-origin" scope is only available in "automatic" mode. |
| 1908 if (params->zoom_settings.scope == ZoomSettings::SCOPE_PER_ORIGIN && | 1902 if (params->zoom_settings.scope == tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN && |
| 1909 params->zoom_settings.mode != ZoomSettings::MODE_AUTOMATIC && | 1903 params->zoom_settings.mode != tabs::ZOOM_SETTINGS_MODE_AUTOMATIC && |
| 1910 params->zoom_settings.mode != ZoomSettings::MODE_NONE) { | 1904 params->zoom_settings.mode != tabs::ZOOM_SETTINGS_MODE_NONE) { |
| 1911 error_ = keys::kPerOriginOnlyInAutomaticError; | 1905 error_ = keys::kPerOriginOnlyInAutomaticError; |
| 1912 return false; | 1906 return false; |
| 1913 } | 1907 } |
| 1914 | 1908 |
| 1915 // Determine the correct internal zoom mode to set |web_contents| to from the | 1909 // Determine the correct internal zoom mode to set |web_contents| to from the |
| 1916 // user-specified |zoom_settings|. | 1910 // user-specified |zoom_settings|. |
| 1917 ZoomController::ZoomMode zoom_mode = ZoomController::ZOOM_MODE_DEFAULT; | 1911 ZoomController::ZoomMode zoom_mode = ZoomController::ZOOM_MODE_DEFAULT; |
| 1918 switch (params->zoom_settings.mode) { | 1912 switch (params->zoom_settings.mode) { |
| 1919 case ZoomSettings::MODE_NONE: | 1913 case tabs::ZOOM_SETTINGS_MODE_NONE: |
| 1920 case ZoomSettings::MODE_AUTOMATIC: | 1914 case tabs::ZOOM_SETTINGS_MODE_AUTOMATIC: |
| 1921 switch (params->zoom_settings.scope) { | 1915 switch (params->zoom_settings.scope) { |
| 1922 case ZoomSettings::SCOPE_NONE: | 1916 case tabs::ZOOM_SETTINGS_SCOPE_NONE: |
| 1923 case ZoomSettings::SCOPE_PER_ORIGIN: | 1917 case tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN: |
| 1924 zoom_mode = ZoomController::ZOOM_MODE_DEFAULT; | 1918 zoom_mode = ZoomController::ZOOM_MODE_DEFAULT; |
| 1925 break; | 1919 break; |
| 1926 case ZoomSettings::SCOPE_PER_TAB: | 1920 case tabs::ZOOM_SETTINGS_SCOPE_PER_TAB: |
| 1927 zoom_mode = ZoomController::ZOOM_MODE_ISOLATED; | 1921 zoom_mode = ZoomController::ZOOM_MODE_ISOLATED; |
| 1928 } | 1922 } |
| 1929 break; | 1923 break; |
| 1930 case ZoomSettings::MODE_MANUAL: | 1924 case tabs::ZOOM_SETTINGS_MODE_MANUAL: |
| 1931 zoom_mode = ZoomController::ZOOM_MODE_MANUAL; | 1925 zoom_mode = ZoomController::ZOOM_MODE_MANUAL; |
| 1932 break; | 1926 break; |
| 1933 case ZoomSettings::MODE_DISABLED: | 1927 case tabs::ZOOM_SETTINGS_MODE_DISABLED: |
| 1934 zoom_mode = ZoomController::ZOOM_MODE_DISABLED; | 1928 zoom_mode = ZoomController::ZOOM_MODE_DISABLED; |
| 1935 } | 1929 } |
| 1936 | 1930 |
| 1937 ZoomController::FromWebContents(web_contents)->SetZoomMode(zoom_mode); | 1931 ZoomController::FromWebContents(web_contents)->SetZoomMode(zoom_mode); |
| 1938 | 1932 |
| 1939 SendResponse(true); | 1933 SendResponse(true); |
| 1940 return true; | 1934 return true; |
| 1941 } | 1935 } |
| 1942 | 1936 |
| 1943 bool TabsGetZoomSettingsFunction::RunAsync() { | 1937 bool TabsGetZoomSettingsFunction::RunAsync() { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1957 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); | 1951 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); |
| 1958 zoom_settings.default_zoom_factor.reset(new double( | 1952 zoom_settings.default_zoom_factor.reset(new double( |
| 1959 content::ZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel()))); | 1953 content::ZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel()))); |
| 1960 | 1954 |
| 1961 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); | 1955 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); |
| 1962 SendResponse(true); | 1956 SendResponse(true); |
| 1963 return true; | 1957 return true; |
| 1964 } | 1958 } |
| 1965 | 1959 |
| 1966 } // namespace extensions | 1960 } // namespace extensions |
| OLD | NEW |