diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-05-03 18:46:06 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-06-26 08:17:25 +0000 |
commit | 57c49df9c6fcbaaffc66900e191312d4e0a0edfa (patch) | |
tree | a067be82e9c367673b3f8efdbcf0a21a780b5451 /src | |
parent | 8d752cab84d437244ef0c2318b70d6516e99a044 (diff) |
Adaptations for Chromium 66
Change-Id: Iee88721a50036d4ef85a23dd1708d4fb84218708
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src')
42 files changed, 536 insertions, 456 deletions
diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 50319e11c..33ef385c7 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -39,7 +39,7 @@ #include "browser_accessibility_manager_qt.h" -#include "third_party/WebKit/public/web/WebAXEnums.h" +#include "ui/accessibility/ax_enums.mojom.h" #include "browser_accessibility_qt.h" using namespace blink; @@ -82,25 +82,25 @@ QAccessibleInterface *BrowserAccessibilityManagerQt::rootParentAccessible() return QAccessible::queryAccessibleInterface(m_parentObject); } -void BrowserAccessibilityManagerQt::FireBlinkEvent(ui::AXEvent event_type, +void BrowserAccessibilityManagerQt::FireBlinkEvent(ax::mojom::Event event_type, BrowserAccessibility* node) { BrowserAccessibilityQt *iface = static_cast<BrowserAccessibilityQt*>(node); switch (event_type) { - case ui::AX_EVENT_FOCUS: { + case ax::mojom::Event::kFocus: { QAccessibleEvent event(iface, QAccessible::Focus); QAccessible::updateAccessibility(&event); break; } - case ui::AX_EVENT_CHECKED_STATE_CHANGED: { + case ax::mojom::Event::kCheckedStateChanged: { QAccessible::State change; change.checked = true; QAccessibleStateChangeEvent event(iface, change); QAccessible::updateAccessibility(&event); break; } - case ui::AX_EVENT_VALUE_CHANGED: { + case ax::mojom::Event::kValueChanged: { QVariant value; if (QAccessibleValueInterface *valueIface = iface->valueInterface()) value = valueIface->currentValue(); @@ -108,18 +108,18 @@ void BrowserAccessibilityManagerQt::FireBlinkEvent(ui::AXEvent event_type, QAccessible::updateAccessibility(&event); break; } - case ui::AX_EVENT_CHILDREN_CHANGED: + case ax::mojom::Event::kChildrenChanged: break; - case ui::AX_EVENT_LAYOUT_COMPLETE: + case ax::mojom::Event::kLayoutComplete: break; - case ui::AX_EVENT_LOAD_COMPLETE: + case ax::mojom::Event::kLoadComplete: break; - case ui::AX_EVENT_TEXT_CHANGED: { + case ax::mojom::Event::kTextChanged: { QAccessibleTextUpdateEvent event(iface, -1, QString(), QString()); QAccessible::updateAccessibility(&event); break; } - case ui::AX_EVENT_TEXT_SELECTION_CHANGED: { + case ax::mojom::Event::kTextSelectionChanged: { QAccessibleTextInterface *textIface = iface->textInterface(); if (textIface) { int start = 0; diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h index e2315d98a..ef204faa5 100644 --- a/src/core/browser_accessibility_manager_qt.h +++ b/src/core/browser_accessibility_manager_qt.h @@ -63,7 +63,7 @@ public: const ui::AXTreeUpdate& initialTree, BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactoryQt()); - void FireBlinkEvent(ui::AXEvent event_type, + void FireBlinkEvent(ax::mojom::Event event_type, BrowserAccessibility* node) override; QAccessibleInterface *rootParentAccessible(); diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index 674b323d0..a73fa4fcd 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -45,8 +45,7 @@ #ifndef QT_NO_ACCESSIBILITY -#include "third_party/WebKit/public/web/WebAXEnums.h" -#include "ui/accessibility/ax_node_data.h" +#include "ui/accessibility/ax_enums.mojom.h" #include "browser_accessibility_manager_qt.h" #include "qtwebenginecoreglobal_p.h" @@ -91,7 +90,7 @@ void *BrowserAccessibilityQt::interface_cast(QAccessible::InterfaceType type) return static_cast<QAccessibleActionInterface*>(this); break; case QAccessible::TextInterface: - if (HasState(ui::AX_STATE_EDITABLE)) + if (HasState(ax::mojom::State::kEditable)) return static_cast<QAccessibleTextInterface*>(this); break; case QAccessible::ValueInterface: { @@ -154,13 +153,13 @@ QString BrowserAccessibilityQt::text(QAccessible::Text t) const { switch (t) { case QAccessible::Name: - return toQt(GetStringAttribute(ui::AX_ATTR_NAME)); + return toQt(GetStringAttribute(ax::mojom::StringAttribute::kName)); case QAccessible::Description: - return toQt(GetStringAttribute(ui::AX_ATTR_DESCRIPTION)); + return toQt(GetStringAttribute(ax::mojom::StringAttribute::kDescription)); case QAccessible::Value: - return toQt(GetStringAttribute(ui::AX_ATTR_VALUE)); + return toQt(GetStringAttribute(ax::mojom::StringAttribute::kValue)); case QAccessible::Accelerator: - return toQt(GetStringAttribute(ui::AX_ATTR_KEY_SHORTCUTS)); + return toQt(GetStringAttribute(ax::mojom::StringAttribute::kKeyShortcuts)); default: break; } @@ -175,267 +174,270 @@ QRect BrowserAccessibilityQt::rect() const { if (!manager()) // needed implicitly by GetScreenBoundsRect() return QRect(); - gfx::Rect bounds = GetScreenBoundsRect(); + gfx::Rect bounds = GetUnclippedScreenBoundsRect(); return QRect(bounds.x(), bounds.y(), bounds.width(), bounds.height()); } QAccessible::Role BrowserAccessibilityQt::role() const { switch (GetRole()) { - case ui::AX_ROLE_NONE: - case ui::AX_ROLE_UNKNOWN: + case ax::mojom::Role::kNone: + case ax::mojom::Role::kUnknown: return QAccessible::NoRole; // Used by Chromium to distinguish between the root of the tree // for this page, and a web area for a frame within this page. - case ui::AX_ROLE_WEB_AREA: - case ui::AX_ROLE_WEB_VIEW: - case ui::AX_ROLE_ROOT_WEB_AREA: // not sure if we need to make a diff here, but this seems common + case ax::mojom::Role::kWebArea: + case ax::mojom::Role::kWebView: + case ax::mojom::Role::kRootWebArea: // not sure if we need to make a diff here, but this seems common return QAccessible::WebDocument; // These roles all directly correspond to blink accessibility roles, // keep these alphabetical. - case ui::AX_ROLE_ABBR: + case ax::mojom::Role::kAbbr: return QAccessible::StaticText; - case ui::AX_ROLE_ALERT: - case ui::AX_ROLE_ALERT_DIALOG: + case ax::mojom::Role::kAlert: + case ax::mojom::Role::kAlertDialog: return QAccessible::AlertMessage; - case ui::AX_ROLE_ANCHOR: + case ax::mojom::Role::kAnchor: return QAccessible::Link; - case ui::AX_ROLE_ANNOTATION: + case ax::mojom::Role::kAnnotation: return QAccessible::StaticText; - case ui::AX_ROLE_APPLICATION: + case ax::mojom::Role::kApplication: return QAccessible::Document; // returning Application here makes Qt return the top level app object - case ui::AX_ROLE_ARTICLE: + case ax::mojom::Role::kArticle: return QAccessible::Section; - case ui::AX_ROLE_AUDIO: + case ax::mojom::Role::kAudio: return QAccessible::Sound; - case ui::AX_ROLE_BANNER: + case ax::mojom::Role::kBanner: return QAccessible::Section; - case ui::AX_ROLE_BLOCKQUOTE: + case ax::mojom::Role::kBlockquote: return QAccessible::Section; - case ui::AX_ROLE_BUTTON: + case ax::mojom::Role::kButton: return QAccessible::Button; - case ui::AX_ROLE_BUTTON_DROP_DOWN: - // TODO: Remove this during the next Chromium update: https://chromium-review.googlesource.com/842475 - return QAccessible::ButtonDropDown; - case ui::AX_ROLE_CANVAS: + case ax::mojom::Role::kCanvas: return QAccessible::Canvas; - case ui::AX_ROLE_CAPTION: + case ax::mojom::Role::kCaption: return QAccessible::Heading; - case ui::AX_ROLE_CARET: + case ax::mojom::Role::kCaret: return QAccessible::NoRole; // FIXME: https://codereview.chromium.org/2781613003 - case ui::AX_ROLE_CELL: + case ax::mojom::Role::kCell: return QAccessible::Cell; - case ui::AX_ROLE_CHECK_BOX: + case ax::mojom::Role::kCheckBox: return QAccessible::CheckBox; - case ui::AX_ROLE_CLIENT: + case ax::mojom::Role::kClient: return QAccessible::Client; - case ui::AX_ROLE_COLOR_WELL: + case ax::mojom::Role::kColorWell: return QAccessible::ColorChooser; - case ui::AX_ROLE_COLUMN: + case ax::mojom::Role::kColumn: return QAccessible::Column; - case ui::AX_ROLE_COLUMN_HEADER: + case ax::mojom::Role::kColumnHeader: return QAccessible::ColumnHeader; - case ui::AX_ROLE_COMBO_BOX_GROUPING: - case ui::AX_ROLE_COMBO_BOX_MENU_BUTTON: - case ui::AX_ROLE_TEXT_FIELD_WITH_COMBO_BOX: + case ax::mojom::Role::kComboBoxGrouping: + case ax::mojom::Role::kComboBoxMenuButton: + case ax::mojom::Role::kTextFieldWithComboBox: return QAccessible::ComboBox; - case ui::AX_ROLE_COMPLEMENTARY: + case ax::mojom::Role::kComplementary: return QAccessible::ComplementaryContent; - case ui::AX_ROLE_CONTENT_INFO: + case ax::mojom::Role::kContentInfo: return QAccessible::Section; - case ui::AX_ROLE_DATE: - case ui::AX_ROLE_DATE_TIME: + case ax::mojom::Role::kDate: + case ax::mojom::Role::kDateTime: return QAccessible::Clock; - case ui::AX_ROLE_DEFINITION: + case ax::mojom::Role::kDefinition: return QAccessible::Paragraph; - case ui::AX_ROLE_DESCRIPTION_LIST: + case ax::mojom::Role::kDescriptionList: return QAccessible::List; - case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: + case ax::mojom::Role::kDescriptionListDetail: return QAccessible::Paragraph; - case ui::AX_ROLE_DETAILS: - return QAccessible::Grouping; - case ui::AX_ROLE_DESCRIPTION_LIST_TERM: + case ax::mojom::Role::kDescriptionListTerm: return QAccessible::ListItem; - case ui::AX_ROLE_DESKTOP: + case ax::mojom::Role::kDetails: + return QAccessible::Grouping; + case ax::mojom::Role::kDesktop: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_DIALOG: + case ax::mojom::Role::kDialog: return QAccessible::Dialog; - case ui::AX_ROLE_DIRECTORY: + case ax::mojom::Role::kDirectory: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_DISCLOSURE_TRIANGLE: + case ax::mojom::Role::kDisclosureTriangle: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_GENERIC_CONTAINER: + case ax::mojom::Role::kGenericContainer: return QAccessible::Section; - case ui::AX_ROLE_DOCUMENT: + case ax::mojom::Role::kDocument: return QAccessible::Document; - case ui::AX_ROLE_EMBEDDED_OBJECT: + case ax::mojom::Role::kEmbeddedObject: return QAccessible::Grouping; // FIXME - case ui::AX_ROLE_FEED: + case ax::mojom::Role::kFeed: return QAccessible::Section; - case ui::AX_ROLE_FIGCAPTION: + case ax::mojom::Role::kFigcaption: return QAccessible::Heading; - case ui::AX_ROLE_FIGURE: + case ax::mojom::Role::kFigure: return QAccessible::Section; - case ui::AX_ROLE_FOOTER: + case ax::mojom::Role::kFooter: return QAccessible::Footer; - case ui::AX_ROLE_FORM: + case ax::mojom::Role::kForm: return QAccessible::Form; - case ui::AX_ROLE_GRID: + case ax::mojom::Role::kGrid: return QAccessible::Table; - case ui::AX_ROLE_GROUP: + case ax::mojom::Role::kGroup: return QAccessible::Grouping; - case ui::AX_ROLE_HEADING: + case ax::mojom::Role::kHeading: return QAccessible::Heading; - case ui::AX_ROLE_IFRAME: + case ax::mojom::Role::kIframe: return QAccessible::Grouping; - case ui::AX_ROLE_IFRAME_PRESENTATIONAL: + case ax::mojom::Role::kIframePresentational: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_IGNORED: + case ax::mojom::Role::kIgnored: return QAccessible::NoRole; - case ui::AX_ROLE_IMAGE: + case ax::mojom::Role::kImage: return QAccessible::Graphic; - case ui::AX_ROLE_IMAGE_MAP: + case ax::mojom::Role::kImageMap: return QAccessible::Graphic; - case ui::AX_ROLE_INLINE_TEXT_BOX: + case ax::mojom::Role::kInlineTextBox: return QAccessible::EditableText; - case ui::AX_ROLE_INPUT_TIME: + case ax::mojom::Role::kInputTime: return QAccessible::SpinBox; - case ui::AX_ROLE_LABEL_TEXT: + case ax::mojom::Role::kLabelText: return QAccessible::StaticText; - case ui::AX_ROLE_LEGEND: + case ax::mojom::Role::kLayoutTable: + case ax::mojom::Role::kLayoutTableCell: + case ax::mojom::Role::kLayoutTableColumn: + case ax::mojom::Role::kLayoutTableRow: + // No role description. + return QAccessible::NoRole; + case ax::mojom::Role::kLegend: return QAccessible::StaticText; - case ui::AX_ROLE_LINE_BREAK: + case ax::mojom::Role::kLineBreak: return QAccessible::Separator; - case ui::AX_ROLE_LINK: + case ax::mojom::Role::kLink: return QAccessible::Link; - case ui::AX_ROLE_LIST: + case ax::mojom::Role::kList: return QAccessible::List; - case ui::AX_ROLE_LIST_BOX: + case ax::mojom::Role::kListBox: return QAccessible::ComboBox; - case ui::AX_ROLE_LIST_BOX_OPTION: + case ax::mojom::Role::kListBoxOption: return QAccessible::ListItem; - case ui::AX_ROLE_LIST_ITEM: + case ax::mojom::Role::kListItem: return QAccessible::ListItem; - case ui::AX_ROLE_LIST_MARKER: + case ax::mojom::Role::kListMarker: return QAccessible::StaticText; - case ui::AX_ROLE_LOCATION_BAR: + case ax::mojom::Role::kLocationBar: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_LOG: + case ax::mojom::Role::kLog: return QAccessible::Section; - case ui::AX_ROLE_MAIN: + case ax::mojom::Role::kMain: return QAccessible::Grouping; - case ui::AX_ROLE_MARK: + case ax::mojom::Role::kMark: return QAccessible::StaticText; - case ui::AX_ROLE_MARQUEE: + case ax::mojom::Role::kMarquee: return QAccessible::Section; - case ui::AX_ROLE_MATH: + case ax::mojom::Role::kMath: return QAccessible::Equation; - case ui::AX_ROLE_MENU: + case ax::mojom::Role::kMenu: return QAccessible::PopupMenu; - case ui::AX_ROLE_MENU_BAR: + case ax::mojom::Role::kMenuBar: return QAccessible::MenuBar; - case ui::AX_ROLE_MENU_ITEM: + case ax::mojom::Role::kMenuItem: return QAccessible::MenuItem; - case ui::AX_ROLE_MENU_ITEM_CHECK_BOX: + case ax::mojom::Role::kMenuItemCheckBox: return QAccessible::CheckBox; - case ui::AX_ROLE_MENU_ITEM_RADIO: + case ax::mojom::Role::kMenuItemRadio: return QAccessible::RadioButton; - case ui::AX_ROLE_MENU_BUTTON: + case ax::mojom::Role::kMenuButton: return QAccessible::MenuItem; - case ui::AX_ROLE_MENU_LIST_OPTION: + case ax::mojom::Role::kMenuListOption: return QAccessible::MenuItem; - case ui::AX_ROLE_MENU_LIST_POPUP: + case ax::mojom::Role::kMenuListPopup: return QAccessible::PopupMenu; - case ui::AX_ROLE_METER: + case ax::mojom::Role::kMeter: return QAccessible::Chart; - case ui::AX_ROLE_NAVIGATION: + case ax::mojom::Role::kNavigation: return QAccessible::Section; - case ui::AX_ROLE_NOTE: + case ax::mojom::Role::kNote: return QAccessible::Note; - case ui::AX_ROLE_PANE: + case ax::mojom::Role::kPane: return QAccessible::Pane; - case ui::AX_ROLE_PARAGRAPH: + case ax::mojom::Role::kParagraph: return QAccessible::Paragraph; - case ui::AX_ROLE_POP_UP_BUTTON: + case ax::mojom::Role::kPopUpButton: return QAccessible::ComboBox; - case ui::AX_ROLE_PRE: + case ax::mojom::Role::kPre: return QAccessible::Section; - case ui::AX_ROLE_PRESENTATIONAL: + case ax::mojom::Role::kPresentational: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_PROGRESS_INDICATOR: + case ax::mojom::Role::kProgressIndicator: return QAccessible::ProgressBar; - case ui::AX_ROLE_RADIO_BUTTON: + case ax::mojom::Role::kRadioButton: return QAccessible::RadioButton; - case ui::AX_ROLE_RADIO_GROUP: + case ax::mojom::Role::kRadioGroup: return QAccessible::Grouping; - case ui::AX_ROLE_REGION: + case ax::mojom::Role::kRegion: return QAccessible::Section; - case ui::AX_ROLE_ROW: + case ax::mojom::Role::kRow: return QAccessible::Row; - case ui::AX_ROLE_ROW_HEADER: + case ax::mojom::Role::kRowHeader: return QAccessible::RowHeader; - case ui::AX_ROLE_RUBY: + case ax::mojom::Role::kRuby: return QAccessible::StaticText; - case ui::AX_ROLE_SCROLL_BAR: + case ax::mojom::Role::kScrollBar: return QAccessible::ScrollBar; - case ui::AX_ROLE_SEARCH: + case ax::mojom::Role::kSearch: return QAccessible::Section; - case ui::AX_ROLE_SEARCH_BOX: + case ax::mojom::Role::kSearchBox: return QAccessible::EditableText; - case ui::AX_ROLE_SLIDER: + case ax::mojom::Role::kSlider: return QAccessible::Slider; - case ui::AX_ROLE_SLIDER_THUMB: + case ax::mojom::Role::kSliderThumb: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_SPIN_BUTTON: + case ax::mojom::Role::kSpinButton: return QAccessible::SpinBox; - case ui::AX_ROLE_SPIN_BUTTON_PART: + case ax::mojom::Role::kSpinButtonPart: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_SPLITTER: + case ax::mojom::Role::kSplitter: return QAccessible::Splitter; - case ui::AX_ROLE_STATIC_TEXT: + case ax::mojom::Role::kStaticText: return QAccessible::StaticText; - case ui::AX_ROLE_STATUS: + case ax::mojom::Role::kStatus: return QAccessible::Indicator; - case ui::AX_ROLE_SVG_ROOT: + case ax::mojom::Role::kSvgRoot: return QAccessible::Graphic; - case ui::AX_ROLE_SWITCH: + case ax::mojom::Role::kSwitch: return QAccessible::Button; - case ui::AX_ROLE_TABLE: + case ax::mojom::Role::kTable: return QAccessible::Table; - case ui::AX_ROLE_TABLE_HEADER_CONTAINER: + case ax::mojom::Role::kTableHeaderContainer: return QAccessible::Section; - case ui::AX_ROLE_TAB: + case ax::mojom::Role::kTab: return QAccessible::PageTab; - case ui::AX_ROLE_TAB_LIST: + case ax::mojom::Role::kTabList: return QAccessible::PageTabList; - case ui::AX_ROLE_TAB_PANEL: + case ax::mojom::Role::kTabPanel: return QAccessible::PageTab; - case ui::AX_ROLE_TERM: + case ax::mojom::Role::kTerm: return QAccessible::StaticText; - case ui::AX_ROLE_TEXT_FIELD: + case ax::mojom::Role::kTextField: return QAccessible::EditableText; - case ui::AX_ROLE_TIME: - case ui::AX_ROLE_TIMER: + case ax::mojom::Role::kTime: + case ax::mojom::Role::kTimer: return QAccessible::Clock; - case ui::AX_ROLE_TITLE_BAR: + case ax::mojom::Role::kTitleBar: return QAccessible::NoRole; // FIXME - case ui::AX_ROLE_TOGGLE_BUTTON: + case ax::mojom::Role::kToggleButton: return QAccessible::Button; - case ui::AX_ROLE_TOOLBAR: + case ax::mojom::Role::kToolbar: return QAccessible::ToolBar; - case ui::AX_ROLE_TOOLTIP: + case ax::mojom::Role::kTooltip: return QAccessible::ToolTip; - case ui::AX_ROLE_TREE: + case ax::mojom::Role::kTree: return QAccessible::Tree; - case ui::AX_ROLE_TREE_GRID: + case ax::mojom::Role::kTreeGrid: return QAccessible::Tree; - case ui::AX_ROLE_TREE_ITEM: + case ax::mojom::Role::kTreeItem: return QAccessible::TreeItem; - case ui::AX_ROLE_VIDEO: + case ax::mojom::Role::kVideo: return QAccessible::Animation; - case ui::AX_ROLE_WINDOW: + case ax::mojom::Role::kWindow: return QAccessible::Window; } return QAccessible::NoRole; @@ -444,75 +446,81 @@ QAccessible::Role BrowserAccessibilityQt::role() const QAccessible::State BrowserAccessibilityQt::state() const { QAccessible::State state = QAccessible::State(); - int32_t s = GetState(); - if (s & (1 << ui::AX_STATE_COLLAPSED)) + if (HasState(ax::mojom::State::kCollapsed)) state.collapsed = true; - if (s & (1 << ui::AX_STATE_DEFAULT)) + if (HasState(ax::mojom::State::kDefault)) state.defaultButton = true; - if (s & (1 << ui::AX_STATE_EDITABLE)) + if (HasState(ax::mojom::State::kEditable)) state.editable = true; - if (s & (1 << ui::AX_STATE_EXPANDED)) + if (HasState(ax::mojom::State::kExpanded)) state.expanded = true; - if (s & (1 << ui::AX_STATE_FOCUSABLE)) + if (HasState(ax::mojom::State::kFocusable)) state.focusable = true; - if (s & (1 << ui::AX_STATE_HASPOPUP)) + if (HasState(ax::mojom::State::kHaspopup)) state.hasPopup = true; - if (s & (1 << ui::AX_STATE_HOVERED)) + if (HasState(ax::mojom::State::kHorizontal)) + {} // FIXME + if (HasState(ax::mojom::State::kHovered)) state.hotTracked = true; - if (s & (1 << ui::AX_STATE_INVISIBLE)) + if (HasState(ax::mojom::State::kIgnored)) + {} // FIXME + if (HasState(ax::mojom::State::kInvisible)) state.invisible = true; - if (s & (1 << ui::AX_STATE_LINKED)) + if (HasState(ax::mojom::State::kLinked)) state.linked = true; - if (s & (1 << ui::AX_STATE_MULTISELECTABLE)) + if (HasState(ax::mojom::State::kMultiline)) + {} // FIXME: state.multiLine = true; + if (HasState(ax::mojom::State::kMultiselectable)) state.multiSelectable = true; - if (s & (1 << ui::AX_STATE_PROTECTED)) + if (HasState(ax::mojom::State::kProtected)) {} // FIXME - if (s & (1 << ui::AX_STATE_REQUIRED)) + if (HasState(ax::mojom::State::kRequired)) {} // FIXME - if (s & (1 << ui::AX_STATE_RICHLY_EDITABLE)) + if (HasState(ax::mojom::State::kRichlyEditable)) {} // FIXME - if (s & (1 << ui::AX_STATE_SELECTABLE)) + if (HasState(ax::mojom::State::kSelectable)) state.selectable = true; - if (s & (1 << ui::AX_STATE_SELECTED)) + if (HasState(ax::mojom::State::kSelected)) state.selected = true; - if (s & (1 << ui::AX_STATE_VERTICAL)) + if (HasState(ax::mojom::State::kVertical)) {} // FIXME - if (s & (1 << ui::AX_STATE_VISITED)) + if (HasState(ax::mojom::State::kVisited)) {} // FIXME if (IsOffscreen()) state.offscreen = true; if (manager()->GetFocus() == this) state.focused = true; - if (GetBoolAttribute(ui::AX_ATTR_BUSY)) + if (GetBoolAttribute(ax::mojom::BoolAttribute::kBusy)) state.busy = true; - if (HasIntAttribute(ui::AX_ATTR_CHECKED_STATE)) { - ui::AXCheckedState checkedState = (ui::AXCheckedState)GetIntAttribute(ui::AX_ATTR_CHECKED_STATE); + if (HasIntAttribute(ax::mojom::IntAttribute::kCheckedState)) { + const ax::mojom::CheckedState checkedState = + static_cast<ax::mojom::CheckedState>(GetIntAttribute(ax::mojom::IntAttribute::kCheckedState)); switch (checkedState) { - case ui::AX_CHECKED_STATE_TRUE: - if (GetRole() == ui::AX_ROLE_TOGGLE_BUTTON) + case ax::mojom::CheckedState::kTrue: + if (GetRole() == ax::mojom::Role::kToggleButton) state.pressed = true; else state.checked = true; break; - case ui::AX_CHECKED_STATE_MIXED: + case ax::mojom::CheckedState::kMixed: state.checkStateMixed = true; break; - case ui::AX_CHECKED_STATE_FALSE: - case ui::AX_CHECKED_STATE_NONE: + case ax::mojom::CheckedState::kFalse: + case ax::mojom::CheckedState::kNone: break; } } - if (HasIntAttribute(ui::AX_ATTR_RESTRICTION)) { - ui::AXRestriction restriction = (ui::AXRestriction)GetIntAttribute(ui::AX_ATTR_RESTRICTION); + if (HasIntAttribute(ax::mojom::IntAttribute::kRestriction)) { + const ax::mojom::Restriction restriction = static_cast<ax::mojom::Restriction>(GetIntAttribute(ax::mojom::IntAttribute::kRestriction)); switch (restriction) { - case ui::AX_RESTRICTION_READ_ONLY: + case ax::mojom::Restriction::kReadOnly: state.readOnly = true; break; - case ui::AX_RESTRICTION_DISABLED: + case ax::mojom::Restriction::kDisabled: state.disabled = true; break; - case ui::AX_RESTRICTION_NONE: + case ax::mojom::Restriction::kNone: break; } } @@ -539,7 +547,7 @@ void BrowserAccessibilityQt::NativeReleaseReference() QStringList BrowserAccessibilityQt::actionNames() const { QStringList actions; - if (HasState(ui::AX_STATE_FOCUSABLE)) + if (HasState(ax::mojom::State::kFocusable)) actions << QAccessibleActionInterface::setFocusAction(); return actions; } @@ -571,7 +579,7 @@ QString BrowserAccessibilityQt::attributes(int offset, int *startOffset, int *en int BrowserAccessibilityQt::cursorPosition() const { int pos = 0; - GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, &pos); + GetIntAttribute(ax::mojom::IntAttribute::kTextSelStart, &pos); return pos; } @@ -585,8 +593,8 @@ int BrowserAccessibilityQt::selectionCount() const { int start = 0; int end = 0; - GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, &start); - GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &end); + GetIntAttribute(ax::mojom::IntAttribute::kTextSelStart, &start); + GetIntAttribute(ax::mojom::IntAttribute::kTextSelEnd, &end); if (start != end) return 1; return 0; @@ -605,8 +613,8 @@ void BrowserAccessibilityQt::selection(int selectionIndex, int *startOffset, int *endOffset = 0; if (selectionIndex != 0) return; - GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, startOffset); - GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, endOffset); + GetIntAttribute(ax::mojom::IntAttribute::kTextSelStart, startOffset); + GetIntAttribute(ax::mojom::IntAttribute::kTextSelEnd, endOffset); } QString BrowserAccessibilityQt::text(int startOffset, int endOffset) const @@ -647,7 +655,7 @@ QVariant BrowserAccessibilityQt::currentValue() const { QVariant result; float value; - if (GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE, &value)) { + if (GetFloatAttribute(ax::mojom::FloatAttribute::kValueForRange, &value)) { result = (double) value; } return result; @@ -663,7 +671,7 @@ QVariant BrowserAccessibilityQt::maximumValue() const { QVariant result; float value; - if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE, &value)) { + if (GetFloatAttribute(ax::mojom::FloatAttribute::kMaxValueForRange, &value)) { result = (double) value; } return result; @@ -673,7 +681,7 @@ QVariant BrowserAccessibilityQt::minimumValue() const { QVariant result; float value; - if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE, &value)) { + if (GetFloatAttribute(ax::mojom::FloatAttribute::kMinValueForRange, &value)) { result = (double) value; } return result; @@ -681,15 +689,20 @@ QVariant BrowserAccessibilityQt::minimumValue() const QVariant BrowserAccessibilityQt::minimumStepSize() const { - return QVariant(); + QVariant result; + float value; + if (GetFloatAttribute(ax::mojom::FloatAttribute::kStepValueForRange, &value)) { + result = (double) value; + } + return result; } QAccessibleInterface *BrowserAccessibilityQt::cellAt(int row, int column) const { int columns = 0; int rows = 0; - if (!GetIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || - !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || + if (!GetIntAttribute(ax::mojom::IntAttribute::kTableColumnCount, &columns) || + !GetIntAttribute(ax::mojom::IntAttribute::kTableRowCount, &rows) || columns <= 0 || rows <= 0) { return 0; @@ -698,7 +711,7 @@ QAccessibleInterface *BrowserAccessibilityQt::cellAt(int row, int column) const if (row < 0 || row >= rows || column < 0 || column >= columns) return 0; - const std::vector<int32_t>& cell_ids = GetIntListAttribute(ui::AX_ATTR_CELL_IDS); + const std::vector<int32_t>& cell_ids = GetIntListAttribute(ax::mojom::IntListAttribute::kCellIds); DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); int cell_id = cell_ids[row * columns + column]; @@ -734,7 +747,7 @@ QString BrowserAccessibilityQt::rowDescription(int row) const int BrowserAccessibilityQt::columnCount() const { int columns = 0; - if (GetIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns)) + if (GetIntAttribute(ax::mojom::IntAttribute::kTableColumnCount, &columns)) return columns; return 0; @@ -743,7 +756,7 @@ int BrowserAccessibilityQt::columnCount() const int BrowserAccessibilityQt::rowCount() const { int rows = 0; - if (GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) + if (GetIntAttribute(ax::mojom::IntAttribute::kTableRowCount, &rows)) return rows; return 0; } @@ -821,7 +834,7 @@ QList<QAccessibleInterface *> BrowserAccessibilityQt::columnHeaderCells() const int BrowserAccessibilityQt::columnIndex() const { int column = 0; - if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column)) + if (GetIntAttribute(ax::mojom::IntAttribute::kTableCellColumnIndex, &column)) return column; return 0; } @@ -839,7 +852,7 @@ QList<QAccessibleInterface *> BrowserAccessibilityQt::rowHeaderCells() const int BrowserAccessibilityQt::rowIndex() const { int row = 0; - if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row)) + if (GetIntAttribute(ax::mojom::IntAttribute::kTableCellRowIndex, &row)) return row; return 0; } @@ -852,7 +865,7 @@ bool BrowserAccessibilityQt::isSelected() const QAccessibleInterface *BrowserAccessibilityQt::table() const { BrowserAccessibility* find_table = PlatformGetParent(); - while (find_table && find_table->GetRole() != ui::AX_ROLE_TABLE) + while (find_table && find_table->GetRole() != ax::mojom::Role::kTable) find_table = find_table->PlatformGetParent(); if (!find_table) return 0; diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp index 4715451f2..81e0b1a44 100644 --- a/src/core/browser_context_adapter.cpp +++ b/src/core/browser_context_adapter.cpp @@ -54,8 +54,6 @@ #include "visited_links_manager_qt.h" #include "web_engine_context.h" -#include "net/proxy/proxy_service.h" - #include "components/keyed_service/content/browser_context_dependency_manager.h" #include <QCoreApplication> diff --git a/src/core/browser_context_adapter_client.cpp b/src/core/browser_context_adapter_client.cpp index 3a7447686..d907c8d26 100644 --- a/src/core/browser_context_adapter_client.cpp +++ b/src/core/browser_context_adapter_client.cpp @@ -38,7 +38,7 @@ ****************************************************************************/ #include "browser_context_adapter_client.h" -#include "content/public/browser/download_item.h" +#include "components/download/public/common/download_item.h" #include "content/public/browser/save_page_type.h" #include <QCoreApplication> @@ -46,43 +46,43 @@ namespace QtWebEngineCore { -ASSERT_ENUMS_MATCH(content::DownloadItem::IN_PROGRESS, BrowserContextAdapterClient::DownloadInProgress) -ASSERT_ENUMS_MATCH(content::DownloadItem::COMPLETE, BrowserContextAdapterClient::DownloadCompleted) -ASSERT_ENUMS_MATCH(content::DownloadItem::CANCELLED, BrowserContextAdapterClient::DownloadCancelled) -ASSERT_ENUMS_MATCH(content::DownloadItem::INTERRUPTED, BrowserContextAdapterClient::DownloadInterrupted) +ASSERT_ENUMS_MATCH(download::DownloadItem::IN_PROGRESS, BrowserContextAdapterClient::DownloadInProgress) +ASSERT_ENUMS_MATCH(download::DownloadItem::COMPLETE, BrowserContextAdapterClient::DownloadCompleted) +ASSERT_ENUMS_MATCH(download::DownloadItem::CANCELLED, BrowserContextAdapterClient::DownloadCancelled) +ASSERT_ENUMS_MATCH(download::DownloadItem::INTERRUPTED, BrowserContextAdapterClient::DownloadInterrupted) ASSERT_ENUMS_MATCH(content::SAVE_PAGE_TYPE_UNKNOWN, BrowserContextAdapterClient::UnknownSavePageFormat) ASSERT_ENUMS_MATCH(content::SAVE_PAGE_TYPE_AS_ONLY_HTML, BrowserContextAdapterClient::SingleHtmlSaveFormat) ASSERT_ENUMS_MATCH(content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, BrowserContextAdapterClient::CompleteHtmlSaveFormat) ASSERT_ENUMS_MATCH(content::SAVE_PAGE_TYPE_AS_MHTML, BrowserContextAdapterClient::MimeHtmlSaveFormat) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NONE, BrowserContextAdapterClient::NoReason) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, BrowserContextAdapterClient::FileFailed) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED, BrowserContextAdapterClient::FileAccessDenied) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, BrowserContextAdapterClient::FileNoSpace) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG, BrowserContextAdapterClient::FileNameTooLong) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE, BrowserContextAdapterClient::FileTooLarge) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED, BrowserContextAdapterClient::FileVirusInfected) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, BrowserContextAdapterClient::FileTransientError) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, BrowserContextAdapterClient::FileBlocked) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED, BrowserContextAdapterClient::FileSecurityCheckFailed) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT, BrowserContextAdapterClient::FileTooShort) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH, BrowserContextAdapterClient::FileHashMismatch) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, BrowserContextAdapterClient::NetworkFailed) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, BrowserContextAdapterClient::NetworkTimeout) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, BrowserContextAdapterClient::NetworkDisconnected) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN, BrowserContextAdapterClient::NetworkServerDown) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST, BrowserContextAdapterClient::NetworkInvalidRequest) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, BrowserContextAdapterClient::ServerFailed) -//ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE, BrowserContextAdapterClient::ServerNoRange) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, BrowserContextAdapterClient::ServerBadContent) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED, BrowserContextAdapterClient::ServerUnauthorized) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM, BrowserContextAdapterClient::ServerCertProblem) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN, BrowserContextAdapterClient::ServerForbidden) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE, BrowserContextAdapterClient::ServerUnreachable) -ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, BrowserContextAdapterClient::UserCanceled) -//ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN, BrowserContextAdapterClient::UserShutdown) -//ASSERT_ENUMS_MATCH(content::DOWNLOAD_INTERRUPT_REASON_CRASH, BrowserContextAdapterClient::Crash) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NONE, BrowserContextAdapterClient::NoReason) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, BrowserContextAdapterClient::FileFailed) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED, BrowserContextAdapterClient::FileAccessDenied) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, BrowserContextAdapterClient::FileNoSpace) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG, BrowserContextAdapterClient::FileNameTooLong) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE, BrowserContextAdapterClient::FileTooLarge) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED, BrowserContextAdapterClient::FileVirusInfected) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, BrowserContextAdapterClient::FileTransientError) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, BrowserContextAdapterClient::FileBlocked) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED, BrowserContextAdapterClient::FileSecurityCheckFailed) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT, BrowserContextAdapterClient::FileTooShort) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH, BrowserContextAdapterClient::FileHashMismatch) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, BrowserContextAdapterClient::NetworkFailed) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, BrowserContextAdapterClient::NetworkTimeout) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, BrowserContextAdapterClient::NetworkDisconnected) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN, BrowserContextAdapterClient::NetworkServerDown) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST, BrowserContextAdapterClient::NetworkInvalidRequest) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, BrowserContextAdapterClient::ServerFailed) +//ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE, BrowserContextAdapterClient::ServerNoRange) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, BrowserContextAdapterClient::ServerBadContent) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED, BrowserContextAdapterClient::ServerUnauthorized) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM, BrowserContextAdapterClient::ServerCertProblem) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN, BrowserContextAdapterClient::ServerForbidden) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE, BrowserContextAdapterClient::ServerUnreachable) +ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, BrowserContextAdapterClient::UserCanceled) +//ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN, BrowserContextAdapterClient::UserShutdown) +//ASSERT_ENUMS_MATCH(download::DOWNLOAD_INTERRUPT_REASON_CRASH, BrowserContextAdapterClient::Crash) QString BrowserContextAdapterClient::downloadInterruptReasonToString(DownloadInterruptReason reason) { diff --git a/src/core/certificate_error_controller.cpp b/src/core/certificate_error_controller.cpp index a681de859..a747451df 100644 --- a/src/core/certificate_error_controller.cpp +++ b/src/core/certificate_error_controller.cpp @@ -67,6 +67,7 @@ ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateWeakKey, net::ERR_CERT ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateNameConstraintViolation, net::ERR_CERT_NAME_CONSTRAINT_VIOLATION) ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateValidityTooLong, net::ERR_CERT_VALIDITY_TOO_LONG) ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateTransparencyRequired, net::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED) +ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateSymantecLegacy, net::ERR_CERT_SYMANTEC_LEGACY) ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateErrorEnd, net::ERR_CERT_END) void CertificateErrorControllerPrivate::accept(bool accepted) diff --git a/src/core/certificate_error_controller.h b/src/core/certificate_error_controller.h index 7ccd03c70..6e1e87cb0 100644 --- a/src/core/certificate_error_controller.h +++ b/src/core/certificate_error_controller.h @@ -83,8 +83,9 @@ public: CertificateNameConstraintViolation = -212, CertificateValidityTooLong = -213, CertificateTransparencyRequired = -214, + CertificateSymantecLegacy = -215, - CertificateErrorEnd = -215 // not an error, just an enum boundary + CertificateErrorEnd = -216 // not an error, just an enum boundary }; CertificateError error() const; diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index b7e894938..4ff93b901 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -66,6 +66,7 @@ #include "content/public/browser/web_contents_user_data.h" #include "content/public/common/content_switches.h" #include "content/public/common/main_function_params.h" +#include "content/public/common/service_manager_connection.h" #include "content/public/common/service_names.mojom.h" #include "content/public/common/url_constants.h" #include "device/geolocation/public/cpp/location_provider.h" @@ -73,8 +74,7 @@ #include "mojo/public/cpp/bindings/binding_set.h" #include "printing/features/features.h" #include "net/ssl/client_cert_identity.h" -#include "services/service_manager/public/cpp/bind_source_info.h" -#include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/service.h" #include "third_party/WebKit/public/platform/modules/insecure_input/insecure_input_service.mojom.h" #include "ui/base/resource/resource_bundle.h" @@ -85,6 +85,7 @@ #include "ui/gl/gl_share_group.h" #include "ui/gl/gpu_timing.h" +#include "qtwebengine/browser/service_qt.h" #include "qtwebengine/grit/qt_webengine_resources.h" #include "browser_context_adapter.h" @@ -284,6 +285,11 @@ public: #endif return 0; } + void ServiceManagerConnectionStarted(content::ServiceManagerConnection *connection) override + { + ServiceQt::GetInstance()->InitConnector(); + connection->GetConnector()->StartService(service_manager::Identity("qtwebengine")); + } private: DISALLOW_COPY_AND_ASSIGN(BrowserMainPartsQt); @@ -384,7 +390,8 @@ content::BrowserMainParts *ContentBrowserClientQt::CreateBrowserMainParts(const return m_browserMainParts; } -void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost* host) +void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost* host, + service_manager::mojom::ServiceRequest *service_request) { const int id = host->GetID(); Profile *profile = Profile::FromBrowserContext(host->GetBrowserContext()); @@ -398,6 +405,17 @@ void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost* #if BUILDFLAG(ENABLE_BASIC_PRINTING) host->AddFilter(new PrintingMessageFilterQt(host->GetID())); #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) + + service_manager::mojom::ServicePtr service; + *service_request = mojo::MakeRequest(&service); + service_manager::mojom::PIDReceiverPtr pid_receiver; + service_manager::Identity renderer_identity = host->GetChildIdentity(); + ServiceQt::GetInstance()->connector()->StartService( + service_manager::Identity("qtwebengine_renderer", + renderer_identity.user_id(), + renderer_identity.instance()), + std::move(service), mojo::MakeRequest(&pid_receiver)); + } void ContentBrowserClientQt::ResourceDispatcherHostCreated() @@ -451,6 +469,7 @@ static int IsCertErrorFatal(int cert_error) case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION: case net::ERR_CERT_VALIDITY_TOO_LONG: case net::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED: + case net::ERR_CERT_SYMANTEC_LEGACY: return false; case net::ERR_CERT_CONTAINS_ERRORS: case net::ERR_CERT_REVOKED: @@ -621,53 +640,10 @@ void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameH m_frameInterfaces->TryBindInterface(interface_name, &interface_pipe); } -class ServiceQt : public service_manager::Service { -public: - ServiceQt(); - - static std::unique_ptr<service_manager::Service> Create() - { - return base::MakeUnique<ServiceQt>(); - } - -private: - // service_manager::Service: - void OnBindInterface(const service_manager::BindSourceInfo& remote_info, - const std::string& name, - mojo::ScopedMessagePipeHandle handle) override; - - service_manager::BinderRegistry m_registry; - service_manager::BinderRegistryWithArgs<const service_manager::BindSourceInfo&> m_registry_with_source_info; - - DISALLOW_COPY_AND_ASSIGN(ServiceQt); -}; - -ServiceQt::ServiceQt() -{ - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); -#if BUILDFLAG(ENABLE_SPELLCHECK) - m_registry_with_source_info.AddInterface( - base::Bind(&SpellCheckHostChromeImpl::Create), - content::BrowserThread::GetTaskRunnerForThread(content::BrowserThread::UI)); -#endif -} - -void ServiceQt::OnBindInterface(const service_manager::BindSourceInfo& remote_info, - const std::string& name, - mojo::ScopedMessagePipeHandle handle) -{ - content::OverrideOnBindInterface(remote_info, name, &handle); - if (!handle.is_valid()) - return; - - if (!m_registry.TryBindInterface(name, &handle)) - m_registry_with_source_info.TryBindInterface(name, &handle, remote_info); -} - void ContentBrowserClientQt::RegisterInProcessServices(StaticServiceMap* services) { service_manager::EmbeddedServiceInfo info; - info.factory = base::Bind(&ServiceQt::Create); + info.factory = ServiceQt::GetInstance()->CreateServiceQtFactory(); services->insert(std::make_pair("qtwebengine", info)); } @@ -687,6 +663,13 @@ std::unique_ptr<base::Value> ContentBrowserClientQt::GetServiceManifestOverlay(b return base::JSONReader::Read(manifest_contents); } +std::vector<content::ContentBrowserClient::ServiceManifestInfo> ContentBrowserClientQt::GetExtraServiceManifests() +{ + return std::vector<content::ContentBrowserClient::ServiceManifestInfo>({ + {"qtwebengine_renderer", IDR_QTWEBENGINE_RENDERER_SERVICE_MANIFEST}, + }); +} + bool ContentBrowserClientQt::CanCreateWindow( content::RenderFrameHost* opener, const GURL& opener_url, @@ -820,6 +803,17 @@ bool ContentBrowserClientQt::AllowWorkerIndexedDB(const GURL &url, return networkDelegate->canSetCookies(url, url, std::string()); } +content::ResourceDispatcherHostLoginDelegate *ContentBrowserClientQt::CreateLoginDelegate( + net::AuthChallengeInfo *authInfo, + content::ResourceRequestInfo::WebContentsGetter web_contents_getter, + bool /*is_main_frame*/, + const GURL &url, + bool first_auth_attempt, + const base::Callback<void(const base::Optional<net::AuthCredentials>&)>&auth_required_callback) +{ + return new ResourceDispatcherHostLoginDelegateQt(authInfo, web_contents_getter, url, first_auth_attempt, auth_required_callback); +} + } // namespace QtWebEngineCore DEFINE_WEB_CONTENTS_USER_DATA_KEY(QtWebEngineCore::ServiceDriver); diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index 8c7079e62..4c1d4990c 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -86,7 +86,8 @@ public: ContentBrowserClientQt(); ~ContentBrowserClientQt(); content::BrowserMainParts* CreateBrowserMainParts(const content::MainFunctionParams&) override; - void RenderProcessWillLaunch(content::RenderProcessHost* host) override; + void RenderProcessWillLaunch(content::RenderProcessHost *host, + service_manager::mojom::ServiceRequest* service_request) override; void ResourceDispatcherHostCreated() override; gl::GLShareGroup* GetInProcessGpuShareGroup() override; content::MediaObserver* GetMediaObserver() override; @@ -119,6 +120,7 @@ public: const std::string& interface_name, mojo::ScopedMessagePipeHandle interface_pipe) override; void RegisterInProcessServices(StaticServiceMap* services) override; + std::vector<ServiceManifestInfo> GetExtraServiceManifests() override; std::unique_ptr<base::Value> GetServiceManifestOverlay(base::StringPiece name) override; bool CanCreateWindow( content::RenderFrameHost* opener, @@ -179,6 +181,14 @@ public: void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override; #endif + content::ResourceDispatcherHostLoginDelegate *CreateLoginDelegate( + net::AuthChallengeInfo *auth_info, + content::ResourceRequestInfo::WebContentsGetter web_contents_getter, + bool is_main_frame, + const GURL &url, + bool first_auth_attempt, + const base::Callback<void(const base::Optional<net::AuthCredentials>&)>&auth_required_callback) override; + private: void InitFrameInterfaces(); BrowserMainPartsQt* m_browserMainParts; diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp index 0dd468240..95f522826 100644 --- a/src/core/devtools_frontend_qt.cpp +++ b/src/core/devtools_frontend_qt.cpp @@ -171,7 +171,7 @@ DevToolsFrontendQt *DevToolsFrontendQt::Show(QSharedPointer<WebContentsAdapter> if (contents->GetURL() == GURL(GetFrontendURL())) { contents->GetController().Reload(content::ReloadType::ORIGINAL_REQUEST_URL, false); } else { - content::NavigationController::LoadURLParams loadParams = content::NavigationController::LoadURLParams(GURL(GetFrontendURL())); + content::NavigationController::LoadURLParams loadParams((GURL(GetFrontendURL()))); loadParams.transition_type = ui::PageTransitionFromInt(ui::PAGE_TRANSITION_AUTO_TOPLEVEL | ui::PAGE_TRANSITION_FROM_API); contents->GetController().LoadURLWithParams(loadParams); } @@ -219,7 +219,7 @@ void DevToolsFrontendQt::Focus() void DevToolsFrontendQt::InspectElementAt(int x, int y) { if (m_agentHost) - m_agentHost->InspectElement(this, x, y); + m_agentHost->InspectElement(m_inspectedContents->GetFocusedFrame(), x, y); else { m_inspect_element_at_x = x; m_inspect_element_at_y = y; @@ -271,7 +271,7 @@ void DevToolsFrontendQt::DocumentAvailableInMainFrame() m_agentHost = agent_host; m_agentHost->AttachClient(this); if (m_inspect_element_at_x != -1) { - m_agentHost->InspectElement(this, m_inspect_element_at_x, m_inspect_element_at_y); + m_agentHost->InspectElement(m_inspectedContents->GetFocusedFrame(), m_inspect_element_at_x, m_inspect_element_at_y); m_inspect_element_at_x = -1; m_inspect_element_at_y = -1; } diff --git a/src/core/devtools_manager_delegate_qt.cpp b/src/core/devtools_manager_delegate_qt.cpp index e926a818f..ecd2a7d40 100644 --- a/src/core/devtools_manager_delegate_qt.cpp +++ b/src/core/devtools_manager_delegate_qt.cpp @@ -159,7 +159,7 @@ void DevToolsServerQt::start() m_isStarted = true; DevToolsAgentHost::StartRemoteDebuggingServer( - std::move(socketFactory), std::string(), + std::move(socketFactory), base::FilePath(), base::FilePath()); } @@ -184,9 +184,9 @@ std::string DevToolsManagerDelegateQt::GetDiscoveryPageHTML() return ui::ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_DEVTOOLS_DISCOVERY_PAGE_HTML).as_string(); } -std::string DevToolsManagerDelegateQt::GetFrontendResource(const std::string& path) +bool DevToolsManagerDelegateQt::HasBundledFrontendResources() { - return content::DevToolsFrontendHost::GetFrontendResource(path).as_string(); + return true; } } //namespace QtWebEngineCore diff --git a/src/core/devtools_manager_delegate_qt.h b/src/core/devtools_manager_delegate_qt.h index 1b0e82bc0..3a519a03f 100644 --- a/src/core/devtools_manager_delegate_qt.h +++ b/src/core/devtools_manager_delegate_qt.h @@ -77,7 +77,8 @@ private: class DevToolsManagerDelegateQt : public content::DevToolsManagerDelegate { public: std::string GetDiscoveryPageHTML() override; - std::string GetFrontendResource(const std::string& path) override; + bool HasBundledFrontendResources() override; + void Initialized(const net::IPEndPoint *ip_address) override; }; diff --git a/src/core/download_manager_delegate_qt.cpp b/src/core/download_manager_delegate_qt.cpp index b8ef9c56d..138439281 100644 --- a/src/core/download_manager_delegate_qt.cpp +++ b/src/core/download_manager_delegate_qt.cpp @@ -39,8 +39,8 @@ #include "download_manager_delegate_qt.h" +#include "content/public/browser/download_item_utils.h" #include "content/public/browser/download_manager.h" -#include "content/public/browser/download_item.h" #include "content/public/browser/save_page_type.h" #include "content/public/browser/web_contents.h" #include "net/http/http_content_disposition.h" @@ -81,13 +81,13 @@ void DownloadManagerDelegateQt::GetNextId(const content::DownloadIdCallback& cal void DownloadManagerDelegateQt::cancelDownload(const content::DownloadTargetCallback& callback) { - callback.Run(base::FilePath(), content::DownloadItem::TARGET_DISPOSITION_PROMPT, content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, base::FilePath(), content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED); + callback.Run(base::FilePath(), download::DownloadItem::TARGET_DISPOSITION_PROMPT, download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, base::FilePath(), download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED); } void DownloadManagerDelegateQt::cancelDownload(quint32 downloadId) { content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_contextAdapter->browserContext()); - content::DownloadItem *download = dlm->GetDownload(downloadId); + download::DownloadItem *download = dlm->GetDownload(downloadId); if (download) download->Cancel(/* user_cancel */ true); } @@ -95,7 +95,7 @@ void DownloadManagerDelegateQt::cancelDownload(quint32 downloadId) void DownloadManagerDelegateQt::pauseDownload(quint32 downloadId) { content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_contextAdapter->browserContext()); - content::DownloadItem *download = dlm->GetDownload(downloadId); + download::DownloadItem *download = dlm->GetDownload(downloadId); if (download) download->Pause(); } @@ -103,20 +103,20 @@ void DownloadManagerDelegateQt::pauseDownload(quint32 downloadId) void DownloadManagerDelegateQt::resumeDownload(quint32 downloadId) { content::DownloadManager* dlm = content::BrowserContext::GetDownloadManager(m_contextAdapter->browserContext()); - content::DownloadItem *download = dlm->GetDownload(downloadId); + download::DownloadItem *download = dlm->GetDownload(downloadId); if (download) download->Resume(); } -bool DownloadManagerDelegateQt::DetermineDownloadTarget(content::DownloadItem* item, +bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem* item, const content::DownloadTargetCallback& callback) { // Keep the forced file path if set, also as the temporary file, so the check for existence // will already return that the file exists. Forced file paths seem to be only used for // store downloads and other special downloads, so they might never end up here anyway. if (!item->GetForcedFilePath().empty()) { - callback.Run(item->GetForcedFilePath(), content::DownloadItem::TARGET_DISPOSITION_PROMPT, - content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, item->GetForcedFilePath(), content::DOWNLOAD_INTERRUPT_REASON_NONE); + callback.Run(item->GetForcedFilePath(), download::DownloadItem::TARGET_DISPOSITION_PROMPT, + download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, item->GetForcedFilePath(), download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE); return true; } @@ -204,10 +204,10 @@ bool DownloadManagerDelegateQt::DetermineDownloadTarget(content::DownloadItem* i base::FilePath filePathForCallback(toFilePathString(suggestedFile.absoluteFilePath())); callback.Run(filePathForCallback, - content::DownloadItem::TARGET_DISPOSITION_OVERWRITE, - content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, + download::DownloadItem::TARGET_DISPOSITION_OVERWRITE, + download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT, filePathForCallback.AddExtension(toFilePathString("download")), - content::DOWNLOAD_INTERRUPT_REASON_NONE); + download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE); } else cancelDownload(callback); @@ -266,7 +266,7 @@ void DownloadManagerDelegateQt::ChooseSavePath(content::WebContents *web_content BrowserContextAdapterClient::DownloadItemInfo info = { m_currentId + 1, toQt(web_contents->GetURL()), - content::DownloadItem::IN_PROGRESS, + download::DownloadItem::IN_PROGRESS, 0, /* totalBytes */ 0, /* receivedBytes */ QStringLiteral("application/x-mimearchive"), @@ -293,10 +293,10 @@ void DownloadManagerDelegateQt::ChooseSavePath(content::WebContents *web_content m_weakPtrFactory.GetWeakPtr())); } -bool DownloadManagerDelegateQt::IsMostRecentDownloadItemAtFilePath(content::DownloadItem *download) +bool DownloadManagerDelegateQt::IsMostRecentDownloadItemAtFilePath(download::DownloadItem *download) { - content::BrowserContext *context = download->GetBrowserContext(); - std::vector<content::DownloadItem*> all_downloads; + content::BrowserContext *context = content::DownloadItemUtils::GetBrowserContext(download); + std::vector<download::DownloadItem*> all_downloads; content::DownloadManager* manager = content::BrowserContext::GetDownloadManager(context); @@ -307,19 +307,19 @@ bool DownloadManagerDelegateQt::IsMostRecentDownloadItemAtFilePath(content::Down if (item->GetGuid() == download->GetGuid() || item->GetTargetFilePath() != download->GetTargetFilePath()) continue; - if (item->GetState() == content::DownloadItem::IN_PROGRESS) + if (item->GetState() == download::DownloadItem::IN_PROGRESS) return false; } return true; } -void DownloadManagerDelegateQt::savePackageDownloadCreated(content::DownloadItem *item) +void DownloadManagerDelegateQt::savePackageDownloadCreated(download::DownloadItem *item) { OnDownloadUpdated(item); item->AddObserver(this); } -void DownloadManagerDelegateQt::OnDownloadUpdated(content::DownloadItem *download) +void DownloadManagerDelegateQt::OnDownloadUpdated(download::DownloadItem *download) { QList<BrowserContextAdapterClient*> clients = m_contextAdapter->clients(); if (!clients.isEmpty()) { @@ -345,7 +345,7 @@ void DownloadManagerDelegateQt::OnDownloadUpdated(content::DownloadItem *downloa } } -void DownloadManagerDelegateQt::OnDownloadDestroyed(content::DownloadItem *download) +void DownloadManagerDelegateQt::OnDownloadDestroyed(download::DownloadItem *download) { download->RemoveObserver(this); download->Cancel(/* user_cancel */ false); diff --git a/src/core/download_manager_delegate_qt.h b/src/core/download_manager_delegate_qt.h index 7563d5d3b..57fd5389b 100644 --- a/src/core/download_manager_delegate_qt.h +++ b/src/core/download_manager_delegate_qt.h @@ -51,10 +51,13 @@ class FilePath; namespace content { class BrowserContext; -class DownloadItem; class WebContents; } +namespace download { +class DownloadItem; +} + namespace QtWebEngineCore { class BrowserContextAdapter; class DownloadManagerDelegateInstance; @@ -62,14 +65,14 @@ class DownloadTargetHelper; class DownloadManagerDelegateQt : public content::DownloadManagerDelegate - , public content::DownloadItem::Observer + , public download::DownloadItem::Observer { public: DownloadManagerDelegateQt(BrowserContextAdapter *contextAdapter); ~DownloadManagerDelegateQt(); void GetNextId(const content::DownloadIdCallback& callback) override; - bool DetermineDownloadTarget(content::DownloadItem* item, + bool DetermineDownloadTarget(download::DownloadItem* item, const content::DownloadTargetCallback& callback) override; void GetSaveDir(content::BrowserContext* browser_context, @@ -81,7 +84,7 @@ public: const base::FilePath::StringType &default_extension, bool can_save_as_complete, const content::SavePackagePathPickedCallback &callback) override; - bool IsMostRecentDownloadItemAtFilePath(content::DownloadItem* download) override; + bool IsMostRecentDownloadItemAtFilePath(download::DownloadItem* download) override; void cancelDownload(quint32 downloadId); @@ -91,12 +94,12 @@ public: void markNextDownloadAsUserRequested() { m_nextDownloadIsUserRequested = true; } // Inherited from content::DownloadItem::Observer - void OnDownloadUpdated(content::DownloadItem *download) override; - void OnDownloadDestroyed(content::DownloadItem *download) override; + void OnDownloadUpdated(download::DownloadItem *download) override; + void OnDownloadDestroyed(download::DownloadItem *download) override; private: void cancelDownload(const content::DownloadTargetCallback& callback); - void savePackageDownloadCreated(content::DownloadItem *download); + void savePackageDownloadCreated(download::DownloadItem *download); BrowserContextAdapter *m_contextAdapter; uint64_t m_currentId; diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp index bfa23d2a1..7f43f9020 100644 --- a/src/core/javascript_dialog_manager_qt.cpp +++ b/src/core/javascript_dialog_manager_qt.cpp @@ -58,7 +58,13 @@ JavaScriptDialogManagerQt *JavaScriptDialogManagerQt::GetInstance() return base::Singleton<JavaScriptDialogManagerQt>::get(); } -void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webContents, const GURL &originUrl, content::JavaScriptDialogType dialog_type, const base::string16 &messageText, const base::string16 &defaultPromptText, content::JavaScriptDialogManager::DialogClosedCallback callback, bool *didSuppressMessage) +void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webContents, + content::RenderFrameHost *renderFrameHost, + content::JavaScriptDialogType dialog_type, + const base::string16 &messageText, + const base::string16 &defaultPromptText, + content::JavaScriptDialogManager::DialogClosedCallback callback, + bool *didSuppressMessage) { WebContentsAdapterClient *client = WebContentsViewQt::from(static_cast<content::WebContentsImpl*>(webContents)->GetView())->client(); if (!client) { @@ -66,16 +72,17 @@ void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webCon *didSuppressMessage = true; return; } - + const GURL originUrl = renderFrameHost->GetLastCommittedOrigin().GetURL(); WebContentsAdapterClient::JavascriptDialogType dialogType = static_cast<WebContentsAdapterClient::JavascriptDialogType>(dialog_type); - runDialogForContents(webContents, dialogType, toQt(messageText), toQt(defaultPromptText), toQt(originUrl.GetOrigin()), std::move(callback)); + runDialogForContents(webContents, dialogType, toQt(messageText), toQt(defaultPromptText), toQt(originUrl), std::move(callback)); } -void JavaScriptDialogManagerQt::RunBeforeUnloadDialog(content::WebContents *webContents, content::RenderFrameHost */*render_frame_host*/, +void JavaScriptDialogManagerQt::RunBeforeUnloadDialog(content::WebContents *webContents, content::RenderFrameHost *renderFrameHost, bool isReload, content::JavaScriptDialogManager::DialogClosedCallback callback) { Q_UNUSED(isReload); - runDialogForContents(webContents, WebContentsAdapterClient::UnloadDialog, QString(), QString(), QUrl(), std::move(callback)); + const GURL originUrl = renderFrameHost->GetLastCommittedOrigin().GetURL(); + runDialogForContents(webContents, WebContentsAdapterClient::UnloadDialog, QString(), QString(), toQt(originUrl), std::move(callback)); } bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *contents, bool accept, const base::string16 *promptOverride) diff --git a/src/core/javascript_dialog_manager_qt.h b/src/core/javascript_dialog_manager_qt.h index aa82b690f..ca7432a77 100644 --- a/src/core/javascript_dialog_manager_qt.h +++ b/src/core/javascript_dialog_manager_qt.h @@ -60,7 +60,7 @@ public: // For use with the Singleton helper class from chromium static JavaScriptDialogManagerQt *GetInstance(); - void RunJavaScriptDialog(content::WebContents *, const GURL &, content::JavaScriptDialogType dialog_type, + void RunJavaScriptDialog(content::WebContents *, content::RenderFrameHost *, content::JavaScriptDialogType dialog_type, const base::string16 &messageText, const base::string16 &defaultPromptText, DialogClosedCallback callback, bool *didSuppressMessage) override; diff --git a/src/core/net/cookie_monster_delegate_qt.cpp b/src/core/net/cookie_monster_delegate_qt.cpp index 335c7fae5..88e200287 100644 --- a/src/core/net/cookie_monster_delegate_qt.cpp +++ b/src/core/net/cookie_monster_delegate_qt.cpp @@ -68,8 +68,8 @@ CookieMonsterDelegateQt::~CookieMonsterDelegateQt() void CookieMonsterDelegateQt::AddStore(net::CookieStore *store) { - std::unique_ptr<net::CookieStore::CookieChangedSubscription> sub = - store->AddCallbackForAllChanges( + std::unique_ptr<net::CookieChangeSubscription> sub = + store->GetChangeDispatcher().AddCallbackForAllChanges( base::Bind(&CookieMonsterDelegateQt::OnCookieChanged, // this object's destruction will deregister the subscription. base::Unretained(this))); @@ -225,11 +225,11 @@ bool CookieMonsterDelegateQt::canGetCookies(const QUrl &firstPartyUrl, const QUr return m_client->d_func()->canAccessCookies(firstPartyUrl, url); } -void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie& cookie, net::CookieStore::ChangeCause cause) +void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie& cookie, net::CookieChangeCause cause) { if (!m_client) return; - m_client->d_func()->onCookieChanged(toQt(cookie), cause != net::CookieStore::ChangeCause::INSERTED); + m_client->d_func()->onCookieChanged(toQt(cookie), cause != net::CookieChangeCause::INSERTED); } void CookieMonsterDelegateQt::GetAllCookiesCallbackOnIOThread(qint64 callbackId, const net::CookieList &cookies) diff --git a/src/core/net/cookie_monster_delegate_qt.h b/src/core/net/cookie_monster_delegate_qt.h index fc7e7a49d..d7cd0f33b 100644 --- a/src/core/net/cookie_monster_delegate_qt.h +++ b/src/core/net/cookie_monster_delegate_qt.h @@ -58,6 +58,7 @@ QT_WARNING_PUSH // effect with clang, so use a pragma for these dirty chromium headers QT_WARNING_DISABLE_CLANG("-Wunused-parameter") #include "base/memory/ref_counted.h" +#include "net/cookies/cookie_change_dispatcher.h" #include "net/cookies/cookie_monster.h" QT_WARNING_POP @@ -78,7 +79,7 @@ static const char* const kCookieableSchemes[] = class QWEBENGINECORE_PRIVATE_EXPORT CookieMonsterDelegateQt : public base::RefCountedThreadSafe<CookieMonsterDelegateQt> { QPointer<QWebEngineCookieStore> m_client; net::CookieMonster *m_cookieMonster; - std::vector<std::unique_ptr<net::CookieStore::CookieChangedSubscription>> m_subscriptions; + std::vector<std::unique_ptr<net::CookieChangeSubscription>> m_subscriptions; public: CookieMonsterDelegateQt(); ~CookieMonsterDelegateQt(); @@ -98,7 +99,7 @@ public: bool canGetCookies(const QUrl &firstPartyUrl, const QUrl &url); void AddStore(net::CookieStore *store); - void OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieStore::ChangeCause cause); + void OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieChangeCause cause); private: void GetAllCookiesOnIOThread(net::CookieMonster::GetCookieListCallback callback); diff --git a/src/core/net/network_delegate_qt.cpp b/src/core/net/network_delegate_qt.cpp index 2373fa180..a67baf96f 100644 --- a/src/core/net/network_delegate_qt.cpp +++ b/src/core/net/network_delegate_qt.cpp @@ -372,9 +372,9 @@ bool NetworkDelegateQt::OnCanQueueReportingReport(const url::Origin& origin) con return false; } -bool NetworkDelegateQt::OnCanSendReportingReport(const url::Origin& origin) const +void NetworkDelegateQt::OnCanSendReportingReports(std::set<url::Origin> origins, base::OnceCallback<void(std::set<url::Origin>)> result_callback) const { - return false; + std::move(result_callback).Run(std::set<url::Origin>()); } bool NetworkDelegateQt::OnCanSetReportingClient(const url::Origin& origin, const GURL& endpoint) const diff --git a/src/core/net/network_delegate_qt.h b/src/core/net/network_delegate_qt.h index 4677fc158..8f11c4628 100644 --- a/src/core/net/network_delegate_qt.h +++ b/src/core/net/network_delegate_qt.h @@ -82,7 +82,7 @@ public: bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(const net::URLRequest&, const GURL&, const GURL&) const override; bool OnCanQueueReportingReport(const url::Origin& origin) const override; - bool OnCanSendReportingReport(const url::Origin& origin) const override; + void OnCanSendReportingReports(std::set<url::Origin> origins, base::OnceCallback<void(std::set<url::Origin>)> result_callback) const override; bool OnCanSetReportingClient(const url::Origin& origin, const GURL& endpoint) const override; bool OnCanUseReportingClient(const url::Origin& origin, const GURL& endpoint) const override; diff --git a/src/core/net/proxy_config_service_qt.cpp b/src/core/net/proxy_config_service_qt.cpp index 7fca18eb6..bf1ff6e14 100644 --- a/src/core/net/proxy_config_service_qt.cpp +++ b/src/core/net/proxy_config_service_qt.cpp @@ -124,19 +124,19 @@ net::ProxyConfigService::ConfigAvailability ProxyConfigServiceQt::GetLatestProxy switch (qtProxy.type()) { case QNetworkProxy::HttpProxy: case QNetworkProxy::Socks5Proxy: - qtRules.type = net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; + qtRules.type = net::ProxyConfig::ProxyRules::Type::PROXY_LIST; qtRules.single_proxies.SetSingleProxyServer(server); break; case QNetworkProxy::HttpCachingProxy: - qtRules.type = net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME; + qtRules.type = net::ProxyConfig::ProxyRules::Type::PROXY_LIST_PER_SCHEME; qtRules.proxies_for_http.SetSingleProxyServer(server); break; case QNetworkProxy::FtpCachingProxy: - qtRules.type = net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME; + qtRules.type = net::ProxyConfig::ProxyRules::Type::PROXY_LIST_PER_SCHEME; qtRules.proxies_for_ftp.SetSingleProxyServer(server); break; default: - qtRules.type = net::ProxyConfig::ProxyRules::TYPE_NO_RULES; + qtRules.type = net::ProxyConfig::ProxyRules::Type::EMPTY; } qtRules.bypass_rules.AddRuleToBypassLocal(); // don't use proxy for connections to localhost diff --git a/src/core/net/proxy_config_service_qt.h b/src/core/net/proxy_config_service_qt.h index 7be3289d0..f50a9a5d5 100644 --- a/src/core/net/proxy_config_service_qt.h +++ b/src/core/net/proxy_config_service_qt.h @@ -43,8 +43,8 @@ #include "base/memory/ref_counted.h" #include "base/observer_list.h" -#include "net/proxy/proxy_config.h" -#include "net/proxy/proxy_config_service.h" +#include "net/proxy_resolution/proxy_config.h" +#include "net/proxy_resolution/proxy_config_service.h" #include <QNetworkProxy> diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index bc714881b..82df47ed2 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -70,6 +70,7 @@ BrowserContextAdapter::PermissionType toQt(content::PermissionType type) case content::PermissionType::ACCESSIBILITY_EVENTS: case content::PermissionType::CLIPBOARD_READ: case content::PermissionType::CLIPBOARD_WRITE: + case content::PermissionType::PAYMENT_HANDLER: case content::PermissionType::NUM: break; } @@ -216,13 +217,6 @@ int PermissionManagerQt::RequestPermissions(const std::vector<content::Permissio return request_id; } -void PermissionManagerQt::CancelPermissionRequest(int request_id) -{ - // Should we add API to cancel permissions in the UI level? - m_requests.remove(request_id); - m_multiRequests.remove(request_id); -} - blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatus( content::PermissionType permission, const GURL& requesting_origin, diff --git a/src/core/permission_manager_qt.h b/src/core/permission_manager_qt.h index c76b377f4..b57dd4ba0 100644 --- a/src/core/permission_manager_qt.h +++ b/src/core/permission_manager_qt.h @@ -66,8 +66,6 @@ public: bool user_gesture, const base::Callback<void(blink::mojom::PermissionStatus)>& callback) override; - void CancelPermissionRequest(int request_id) override; - blink::mojom::PermissionStatus GetPermissionStatus( content::PermissionType permission, const GURL& requesting_origin, diff --git a/src/core/printing/print_view_manager_base_qt.cpp b/src/core/printing/print_view_manager_base_qt.cpp index abc1edf74..51aa37f62 100644 --- a/src/core/printing/print_view_manager_base_qt.cpp +++ b/src/core/printing/print_view_manager_base_qt.cpp @@ -119,7 +119,7 @@ bool PrintViewManagerBaseQt::PrintDocument(printing::PrintedDocument *document, const gfx::Point &offsets) { std::unique_ptr<printing::PdfMetafileSkia> metafile = - std::make_unique<printing::PdfMetafileSkia>(printing::SkiaDocumentType::PDF); + std::make_unique<printing::PdfMetafileSkia>(); if (!metafile->InitFromData(print_data->front(), print_data->size())) { NOTREACHED() << "Invalid metafile"; web_contents()->Stop(); @@ -153,22 +153,23 @@ void PrintViewManagerBaseQt::OnDidPrintDocument(const PrintHostMsg_DidPrintDocum if (!document) return; - if (!base::SharedMemory::IsHandleValid(params.metafile_data_handle)) { + const PrintHostMsg_DidPrintContent_Params &content = params.content; + if (!base::SharedMemory::IsHandleValid(content.metafile_data_handle)) { NOTREACHED() << "invalid memory handle"; web_contents()->Stop(); return; } std::unique_ptr<base::SharedMemory> shared_buf = - std::make_unique<base::SharedMemory>(params.metafile_data_handle, true); - if (!shared_buf->Map(params.data_size)) { + std::make_unique<base::SharedMemory>(content.metafile_data_handle, true); + if (!shared_buf->Map(content.data_size)) { NOTREACHED() << "couldn't map"; web_contents()->Stop(); return; } scoped_refptr<base::RefCountedBytes> bytes = base::MakeRefCounted<base::RefCountedBytes>( - reinterpret_cast<const unsigned char*>(shared_buf->memory()), params.data_size); + reinterpret_cast<const unsigned char*>(shared_buf->memory()), content.data_size); PrintDocument(document, bytes, params.page_size, params.content_area, params.physical_offsets); } diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp index 627afb01a..177f4de2f 100644 --- a/src/core/printing/print_view_manager_qt.cpp +++ b/src/core/printing/print_view_manager_qt.cpp @@ -51,6 +51,7 @@ #include "base/values.h" #include "base/memory/ref_counted_memory.h" +#include "base/task_scheduler/post_task.h" #include "chrome/browser/printing/print_job_manager.h" #include "chrome/browser/printing/printer_query.h" #include "components/printing/common/print_messages.h" @@ -102,10 +103,10 @@ static void SavePdfFile(scoped_refptr<base::RefCountedBytes> data, const QtWebEngineCore::PrintViewManagerQt::PrintToPDFFileCallback &saveCallback) { - DCHECK_CURRENTLY_ON(content::BrowserThread::FILE); + base::AssertBlockingAllowed(); DCHECK_GT(data->size(), 0U); - printing::PdfMetafileSkia metafile(printing::SkiaDocumentType::PDF); + printing::PdfMetafileSkia metafile; metafile.InitFromData(static_cast<const void*>(data->front()), data->size()); base::File file(path, @@ -326,17 +327,16 @@ void PrintViewManagerQt::OnMetafileReadyForPrinting( resetPdfState(); if (!pdf_print_callback.is_null()) { - std::vector<char> data_vector = GetStdVectorFromHandle(params.metafile_data_handle, - params.data_size); + std::vector<char> data_vector = GetStdVectorFromHandle(params.content.metafile_data_handle, + params.content.data_size); content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, base::Bind(pdf_print_callback, data_vector)); } else { scoped_refptr<base::RefCountedBytes> data_bytes - = GetBytesFromHandle(params.metafile_data_handle, params.data_size); - content::BrowserThread::PostTask(content::BrowserThread::FILE, - FROM_HERE, - base::Bind(&SavePdfFile, data_bytes, pdfOutputPath, pdf_save_callback)); + = GetBytesFromHandle(params.content.metafile_data_handle, params.content.data_size); + base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()}, + base::BindOnce(&SavePdfFile, data_bytes, pdfOutputPath, pdf_save_callback)); } } diff --git a/src/core/printing/printing_message_filter_qt.cpp b/src/core/printing/printing_message_filter_qt.cpp index c0e3498ee..9f37e6b94 100644 --- a/src/core/printing/printing_message_filter_qt.cpp +++ b/src/core/printing/printing_message_filter_qt.cpp @@ -176,7 +176,7 @@ void PrintingMessageFilterQt::OnScriptedPrintReply( } PrintHostMsg_ScriptedPrint::WriteReplyParams(reply_msg, params); Send(reply_msg); - if (params.params.dpi && params.params.document_cookie) { + if (!params.params.dpi.IsEmpty() && params.params.document_cookie) { queue_->QueuePrinterQuery(printer_query.get()); } else { printer_query->StopWorker(); diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp index 128caa523..bae1ec75d 100644 --- a/src/core/profile_qt.cpp +++ b/src/core/profile_qt.cpp @@ -52,7 +52,6 @@ #include "base/time/time.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/storage_partition.h" -#include "net/proxy/proxy_config_service.h" #include "base/base_paths.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni index e0eb3e23a..f2a0c8a38 100644 --- a/src/core/qtwebengine_sources.gni +++ b/src/core/qtwebengine_sources.gni @@ -39,8 +39,8 @@ source_set("qtwebengine_sources") { "//third_party/skia/include/core" ] deps = [ - "//chrome/common:features", - "//components/nacl/common:features", + "//chrome/common:buildflags", + "//components/nacl/common:buildflags", "//extensions/features:features", ] sources = [ @@ -81,6 +81,8 @@ source_set("qtwebengine_sources") { "//extensions/common/constants.h", "//extensions/common/url_pattern.cc", "//extensions/common/url_pattern.h", + "//qtwebengine/browser/service_qt.cc", + "//qtwebengine/browser/service_qt.h", ] if (is_linux) { diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index e52f88cb6..826737efe 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -253,7 +253,7 @@ public: , dpiScale(dpiScale) { // ACTION_DOWN and ACTION_UP must be accesssed through pointer_index 0 - Q_ASSERT((action != ACTION_DOWN && action != ACTION_UP) || index == 0); + Q_ASSERT((action != Action::DOWN && action != Action::UP) || index == 0); } uint32_t GetUniqueEventId() const override { return eventId; } @@ -290,7 +290,7 @@ public: float GetHistoricalTouchMajor(size_t pointer_index, size_t historical_index) const override { return 0; } float GetHistoricalX(size_t pointer_index, size_t historical_index) const override { return 0; } float GetHistoricalY(size_t pointer_index, size_t historical_index) const override { return 0; } - ToolType GetToolType(size_t pointer_index) const override { return ui::MotionEvent::TOOL_TYPE_FINGER; } + ToolType GetToolType(size_t pointer_index) const override { return ui::MotionEvent::ToolType::FINGER; } int GetButtonState() const override { return 0; } private: @@ -433,7 +433,12 @@ gfx::Vector2dF RenderWidgetHostViewQt::GetLastScrollOffset() const { return m_lastScrollOffset; } -gfx::Size RenderWidgetHostViewQt::GetPhysicalBackingSize() const +gfx::Vector2d RenderWidgetHostViewQt::GetOffsetFromRootSurface() +{ + return gfx::Vector2d(); +} + +gfx::Size RenderWidgetHostViewQt::GetCompositorViewportPixelSize() const { if (!m_delegate || !m_delegate->window() || !m_delegate->window()->screen()) return gfx::Size(); @@ -721,11 +726,6 @@ void RenderWidgetHostViewQt::SetTooltipText(const base::string16 &tooltip_text) m_adapterClient->setToolTip(toQt(tooltip_text)); } -bool RenderWidgetHostViewQt::HasAcceleratedSurface(const gfx::Size&) -{ - return false; -} - void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient *frameSink) { // Accumulated resources belong to the old RendererCompositorFrameSink and @@ -777,9 +777,9 @@ void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &lo m_adapterClient->updateContentsSize(toQt(m_lastContentsSize)); } -void RenderWidgetHostViewQt::GetScreenInfo(content::ScreenInfo* results) +void RenderWidgetHostViewQt::GetScreenInfo(content::ScreenInfo *results) const { - QWindow* window = m_delegate->window(); + QWindow *window = m_delegate->window(); if (!window) return; GetScreenInfoFromNativeWindow(window, results); @@ -1168,7 +1168,8 @@ void RenderWidgetHostViewQt::processMotionEvent(const ui::MotionEvent &motionEve return; blink::WebTouchEvent touchEvent = ui::CreateWebTouchEventFromMotionEvent(motionEvent, - result.moved_beyond_slop_region); + result.moved_beyond_slop_region, + false /*hovering, FIXME ?*/); m_host->ForwardTouchEventWithLatencyInfo(touchEvent, CreateLatencyInfo(touchEvent)); } @@ -1531,7 +1532,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev) if (touchPoints.isEmpty()) touchPoints = m_previousTouchPoints; clearPreviousTouchMotionState(); - MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::ACTION_CANCEL, + MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::Action::CANCEL, ev->modifiers(), dpiScale()); processMotionEvent(cancelEvent); return; @@ -1566,18 +1567,18 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev) switch (touchPoints[i].state()) { case Qt::TouchPointPressed: if (m_sendMotionActionDown) { - action = ui::MotionEvent::ACTION_DOWN; + action = ui::MotionEvent::Action::DOWN; m_sendMotionActionDown = false; } else { - action = ui::MotionEvent::ACTION_POINTER_DOWN; + action = ui::MotionEvent::Action::POINTER_DOWN; } break; case Qt::TouchPointMoved: - action = ui::MotionEvent::ACTION_MOVE; + action = ui::MotionEvent::Action::MOVE; break; case Qt::TouchPointReleased: - action = touchPoints.size() > 1 ? ui::MotionEvent::ACTION_POINTER_UP : - ui::MotionEvent::ACTION_UP; + action = touchPoints.size() > 1 ? ui::MotionEvent::Action::POINTER_UP : + ui::MotionEvent::Action::UP; break; default: // Ignore Qt::TouchPointStationary @@ -1693,8 +1694,6 @@ bool RenderWidgetHostViewQt::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs& m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval); if (m_rendererCompositorFrameSink) m_rendererCompositorFrameSink->OnBeginFrame(args); - else // FIXME: is this else part ever needed? - m_host->Send(new ViewMsg_BeginFrame(m_host->GetRoutingID(), args)); return true; } diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 2a1485510..85ff0a80b 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -128,7 +128,8 @@ public: void SetSize(const gfx::Size& size) override; void SetBounds(const gfx::Rect&) override; gfx::Vector2dF GetLastScrollOffset() const override; - gfx::Size GetPhysicalBackingSize() const override; + gfx::Vector2d GetOffsetFromRootSurface() override; + gfx::Size GetCompositorViewportPixelSize() const override; gfx::NativeView GetNativeView() const override; gfx::NativeViewAccessible GetNativeViewAccessible() override; void Focus() override; @@ -149,12 +150,11 @@ public: void RenderProcessGone(base::TerminationStatus, int) override; void Destroy() override; void SetTooltipText(const base::string16 &tooltip_text) override; - bool HasAcceleratedSurface(const gfx::Size&) override; void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override; void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame, viz::mojom::HitTestRegionListPtr) override; void WheelEventAck(const blink::WebMouseWheelEvent &event, content::InputEventAckState ack_result) override; - void GetScreenInfo(content::ScreenInfo* results); + void GetScreenInfo(content::ScreenInfo* results) const override; gfx::Rect GetBoundsInRootWindow() override; void ProcessAckedTouchEvent(const content::TouchEventWithLatencyInfo &touch, content::InputEventAckState ack_result) override; void ClearCompositorFrame() override; diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 82467c2cb..846c77c92 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -64,6 +64,7 @@ #include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_view.h" #include "net/base/net_errors.h" +#include "services/service_manager/public/cpp/service_context.h" #include "third_party/WebKit/public/platform/WebURLError.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "ui/base/resource/resource_bundle.h" @@ -100,23 +101,21 @@ ContentRendererClientQt::~ContentRendererClientQt() void ContentRendererClientQt::RenderThreadStarted() { content::RenderThread *renderThread = content::RenderThread::Get(); + (void)GetConnector(); m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave); m_webCacheImpl.reset(new web_cache::WebCacheImpl()); auto registry = base::MakeUnique<service_manager::BinderRegistry>(); registry->AddInterface(m_visitedLinkSlave->GetBindCallback(), base::ThreadTaskRunnerHandle::Get()); - content::ChildThread::Get() - ->GetServiceManagerConnection() - ->AddConnectionFilter(base::MakeUnique<content::SimpleConnectionFilter>( - std::move(registry))); - + content::ChildThread::Get()->GetServiceManagerConnection()->AddConnectionFilter( + base::MakeUnique<content::SimpleConnectionFilter>(std::move(registry))); renderThread->AddObserver(UserResourceController::instance()); #if BUILDFLAG(ENABLE_SPELLCHECK) - m_spellCheck.reset(new SpellCheck(this)); - renderThread->AddObserver(m_spellCheck.data()); + if (!m_spellCheck) + InitSpellCheck(); #endif } @@ -231,11 +230,26 @@ bool ContentRendererClientQt::IsLinkVisited(unsigned long long linkHash) return m_visitedLinkSlave->IsVisited(linkHash); } +void ContentRendererClientQt::OnStart() +{ + context()->connector()->BindConnectorRequest(std::move(m_connectorRequest)); +} + +void ContentRendererClientQt::OnBindInterface(const service_manager::BindSourceInfo &remote_info, + const std::string& name, + mojo::ScopedMessagePipeHandle handle) +{ + Q_UNUSED(remote_info); + m_registry.TryBindInterface(name, &handle); +} + void ContentRendererClientQt::GetInterface(const std::string &interface_name, mojo::ScopedMessagePipeHandle interface_pipe) { - content::RenderThread::Get()->GetConnector()->BindInterface(service_manager::Identity("qtwebengine"), - interface_name, - std::move(interface_pipe)); + if (!m_connector) + return; + m_connector->BindInterface(service_manager::Identity("qtwebengine"), + interface_name, + std::move(interface_pipe)); } // The following is based on chrome/renderer/media/chrome_key_systems.cc: @@ -428,4 +442,25 @@ void ContentRendererClientQt::AddSupportedKeySystems(std::vector<std::unique_ptr #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) } +#if BUILDFLAG(ENABLE_SPELLCHECK) +void ContentRendererClientQt::InitSpellCheck() +{ + m_spellCheck.reset(new SpellCheck(&m_registry, this)); +} +#endif + +void ContentRendererClientQt::CreateRendererService(service_manager::mojom::ServiceRequest service_request) +{ + m_serviceContext = std::make_unique<service_manager::ServiceContext>( + std::make_unique<service_manager::ForwardingService>(this), + std::move(service_request)); +} + +service_manager::Connector* ContentRendererClientQt::GetConnector() +{ + if (!m_connector) + m_connector = service_manager::Connector::Create(&m_connectorRequest); + return m_connector.get(); +} + } // namespace diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index a1bf29966..9da664398 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -41,7 +41,10 @@ #include "content/public/renderer/content_renderer_client.h" #include "components/spellcheck/spellcheck_build_features.h" +#include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/local_interface_provider.h" +#include "services/service_manager/public/cpp/service.h" #include <QScopedPointer> @@ -64,11 +67,14 @@ class SpellCheck; namespace QtWebEngineCore { class ContentRendererClientQt : public content::ContentRendererClient + , public service_manager::Service , public service_manager::LocalInterfaceProvider { public: ContentRendererClientQt(); ~ContentRendererClientQt(); + + // content::ContentRendererClient: void RenderThreadStarted() override; void RenderViewCreated(content::RenderView *render_view) override; void RenderFrameCreated(content::RenderFrame* render_frame) override; @@ -86,19 +92,38 @@ public: void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override; + void CreateRendererService(service_manager::mojom::ServiceRequest service_request) override; + private: +#if BUILDFLAG(ENABLE_SPELLCHECK) + void InitSpellCheck(); +#endif + service_manager::Connector *GetConnector(); + + // service_manager::Service: + void OnStart() override; + void OnBindInterface(const service_manager::BindSourceInfo &remote_info, + const std::string &name, + mojo::ScopedMessagePipeHandle handle) override; + // service_manager::LocalInterfaceProvider: void GetInterface(const std::string& name, mojo::ScopedMessagePipeHandle request_handle) override; void GetNavigationErrorStringsInternal(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest, const error_page::Error& error, std::string* errorHtml, base::string16* errorDescription); - QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave; QScopedPointer<web_cache::WebCacheImpl> m_webCacheImpl; #if BUILDFLAG(ENABLE_SPELLCHECK) QScopedPointer<SpellCheck> m_spellCheck; #endif + + std::unique_ptr<service_manager::Connector> m_connector; + service_manager::mojom::ConnectorRequest m_connectorRequest; + std::unique_ptr<service_manager::ServiceContext> m_serviceContext; + service_manager::BinderRegistry m_registry; + + DISALLOW_COPY_AND_ASSIGN(ContentRendererClientQt); }; } // namespace diff --git a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp index 421b3167b..265386ee8 100644 --- a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp +++ b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp @@ -56,26 +56,28 @@ namespace QtWebEngineCore { -ResourceDispatcherHostLoginDelegateQt::ResourceDispatcherHostLoginDelegateQt(net::AuthChallengeInfo *authInfo, net::URLRequest *request) +ResourceDispatcherHostLoginDelegateQt::ResourceDispatcherHostLoginDelegateQt( + net::AuthChallengeInfo *authInfo, + content::ResourceRequestInfo::WebContentsGetter web_contents_getter, + GURL url, + bool first_auth_attempt, + const base::Callback<void(const base::Optional<net::AuthCredentials>&)> &auth_required_callback) : m_authInfo(authInfo) - , m_request(request) + , m_url(url) + , m_auth_required_callback(auth_required_callback) { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); - const content::ResourceRequestInfo *requestInfo = content::ResourceRequestInfo::ForRequest(request); - Q_ASSERT(requestInfo); content::BrowserThread::PostTask( content::BrowserThread::UI, FROM_HERE, base::Bind(&ResourceDispatcherHostLoginDelegateQt::triggerDialog, this, - requestInfo->GetWebContentsGetterForRequest())); + web_contents_getter)); } ResourceDispatcherHostLoginDelegateQt::~ResourceDispatcherHostLoginDelegateQt() { Q_ASSERT(m_dialogController.isNull()); - // We must have called ClearLoginDelegateForRequest if we didn't receive an OnRequestCancelled. - Q_ASSERT(!m_request); } void ResourceDispatcherHostLoginDelegateQt::OnRequestCancelled() @@ -85,7 +87,7 @@ void ResourceDispatcherHostLoginDelegateQt::OnRequestCancelled() QUrl ResourceDispatcherHostLoginDelegateQt::url() const { - return toQt(m_request->url()); + return toQt(m_url); } QString ResourceDispatcherHostLoginDelegateQt::realm() const @@ -120,14 +122,13 @@ void ResourceDispatcherHostLoginDelegateQt::triggerDialog(const content::Resourc void ResourceDispatcherHostLoginDelegateQt::sendAuthToRequester(bool success, const QString &user, const QString &password) { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); - if (!m_request) - return; - if (success) - m_request->SetAuth(net::AuthCredentials(toString16(user), toString16(password))); - else - m_request->CancelAuth(); - content::ResourceDispatcherHost::Get()->ClearLoginDelegateForRequest(m_request); + if (!m_auth_required_callback.is_null()) { + if (success) + std::move(m_auth_required_callback).Run(net::AuthCredentials(toString16(user), toString16(password))); + else + std::move(m_auth_required_callback).Run(base::nullopt); + } destroy(); } @@ -135,7 +136,7 @@ void ResourceDispatcherHostLoginDelegateQt::sendAuthToRequester(bool success, co void ResourceDispatcherHostLoginDelegateQt::destroy() { m_dialogController.reset(); - m_request = 0; + m_auth_required_callback.Reset(); } static void LaunchURL(const GURL& url, int render_process_id, @@ -169,10 +170,4 @@ bool ResourceDispatcherHostDelegateQt::HandleExternalProtocol(const GURL& url, c return true; } -content::ResourceDispatcherHostLoginDelegate *ResourceDispatcherHostDelegateQt::CreateLoginDelegate(net::AuthChallengeInfo *authInfo, net::URLRequest *request) -{ - // ResourceDispatcherHostLoginDelegateQt is ref-counted and will be released after we called ClearLoginDelegateForRequest. - return new ResourceDispatcherHostLoginDelegateQt(authInfo, request); -} - } // namespace QtWebEngineCore diff --git a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h index c254a60f5..5bebe1599 100644 --- a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h +++ b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h @@ -42,16 +42,28 @@ #include "content/public/browser/resource_dispatcher_host_delegate.h" #include "content/public/browser/resource_dispatcher_host_login_delegate.h" +#include "url/gurl.h" #include "web_contents_adapter_client.h" +namespace net { +class AuthChallengeInfo; +class AuthCredentials; +} + namespace QtWebEngineCore { class AuthenticationDialogController; +// FIXME: move to separate file class ResourceDispatcherHostLoginDelegateQt : public content::ResourceDispatcherHostLoginDelegate { public: - ResourceDispatcherHostLoginDelegateQt(net::AuthChallengeInfo *authInfo, net::URLRequest *request); + ResourceDispatcherHostLoginDelegateQt(net::AuthChallengeInfo *authInfo, + content::ResourceRequestInfo::WebContentsGetter web_contents_getter, + GURL url, + bool first_auth_attempt, + const base::Callback<void(const base::Optional<net::AuthCredentials>&)> &auth_required_callback); + ~ResourceDispatcherHostLoginDelegateQt(); // ResourceDispatcherHostLoginDelegate implementation @@ -70,9 +82,8 @@ private: scoped_refptr<net::AuthChallengeInfo> m_authInfo; - // The request that wants login data. - // Must only be accessed on the IO thread. - net::URLRequest *m_request; + GURL m_url; + base::Callback<void(const base::Optional<net::AuthCredentials>&)> m_auth_required_callback; // This member is used to keep authentication dialog controller alive until // authorization is sent or cancelled. @@ -83,8 +94,6 @@ class ResourceDispatcherHostDelegateQt : public content::ResourceDispatcherHostD public: bool HandleExternalProtocol(const GURL& url, content::ResourceRequestInfo* info) override; - - content::ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(net::AuthChallengeInfo *authInfo, net::URLRequest *request) override; }; } // namespace QtWebEngineCore diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index fc1bbd044..31379a0f2 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -66,7 +66,8 @@ #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/devtools_agent_host.h" -#include <content/public/browser/download_manager.h> +#include "content/public/browser/download_manager.h" +#include "content/public/browser/download_request_utils.h" #include "content/public/browser/host_zoom_map.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_view_host.h" @@ -628,8 +629,8 @@ void WebContentsAdapter::load(const QWebEngineHttpRequest &request) } } - auto navigate = [this, params]() { - webContents()->GetController().LoadURLWithParams(params); + auto navigate = [this, loadParams = std::move(params)]() { + webContents()->GetController().LoadURLWithParams(loadParams); // Follow chrome::Navigate and invalidate the URL immediately. m_webContentsDelegate->NavigationStateChanged(webContents(), content::INVALIDATE_TYPE_URL); focusIfNecessary(); @@ -637,7 +638,7 @@ void WebContentsAdapter::load(const QWebEngineHttpRequest &request) if (resizeNeeded) { // Schedule navigation on the event loop. - QTimer::singleShot(0, navigate); + QTimer::singleShot(0, std::move(navigate)); } else { navigate(); } @@ -1033,17 +1034,19 @@ void WebContentsAdapter::download(const QUrl &url, const QString &suggestedFileN "It's possible not to use this feature." })"); GURL gurl = toGurl(url); - std::unique_ptr<content::DownloadUrlParameters> params( - content::DownloadUrlParameters::CreateForWebContentsMainFrame(webContents(), gurl, traffic_annotation)); + std::unique_ptr<download::DownloadUrlParameters> params( + content::DownloadRequestUtils::CreateDownloadForWebContentsMainFrame(webContents(), gurl, traffic_annotation)); params->set_suggested_name(toString16(suggestedFileName)); // referrer logic based on chrome/browser/renderer_context_menu/render_view_context_menu.cc: - params->set_referrer( - content::Referrer::SanitizeForRequest( - gurl, - content::Referrer(toGurl(referrerUrl).GetAsReferrer(), - static_cast<blink::WebReferrerPolicy>(referrerPolicy)))); + content::Referrer referrer = content::Referrer::SanitizeForRequest( + gurl, + content::Referrer(toGurl(referrerUrl).GetAsReferrer(), + static_cast<blink::WebReferrerPolicy>(referrerPolicy))); + + params->set_referrer(referrer.url); + params->set_referrer_policy(content::Referrer::ReferrerPolicyForUrlRequest(referrer.policy)); dlm->DownloadUrl(std::move(params)); } diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 8a3757838..3ebeaeb38 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -87,7 +87,8 @@ namespace QtWebEngineCore { // Maps the LogSeverity defines in base/logging.h to the web engines message levels. -static WebContentsAdapterClient::JavaScriptConsoleMessageLevel mapToJavascriptConsoleMessageLevel(int32_t messageLevel) { +static WebContentsAdapterClient::JavaScriptConsoleMessageLevel mapToJavascriptConsoleMessageLevel(int32_t messageLevel) +{ if (messageLevel < 1) return WebContentsAdapterClient::Info; else if (messageLevel > 1) @@ -499,9 +500,10 @@ void WebContentsDelegateQt::UpdateTargetURL(content::WebContents* source, const m_viewClient->didUpdateTargetURL(toQt(url)); } -void WebContentsDelegateQt::WasShown() +void WebContentsDelegateQt::OnVisibilityChanged(content::Visibility visibility) { - web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetMainFrame()->GetProcess()->GetID()); + if (visibility != content::Visibility::HIDDEN) + web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetMainFrame()->GetProcess()->GetID()); } void WebContentsDelegateQt::DidFirstVisuallyNonEmptyPaint() diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h index 2ef87ccd8..07d99a52d 100644 --- a/src/core/web_contents_delegate_qt.h +++ b/src/core/web_contents_delegate_qt.h @@ -136,7 +136,7 @@ public: void DidFinishLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url) override; void BeforeUnloadFired(const base::TimeTicks& proceed_time) override; void DidUpdateFaviconURL(const std::vector<content::FaviconURL> &candidates) override; - void WasShown() override; + void OnVisibilityChanged(content::Visibility visibility) override; void DidFirstVisuallyNonEmptyPaint() override; void ActivateContents(content::WebContents* contents) override; diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index 6b68a9569..b680aee0f 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -262,12 +262,6 @@ void WebContentsViewQt::TakeFocus(bool reverse) m_client->passOnFocus(reverse); } -void WebContentsViewQt::GetScreenInfo(content::ScreenInfo* results) const -{ - if (auto rwhv = static_cast<RenderWidgetHostViewQt *>(m_webContents->GetRenderWidgetHostView())) - rwhv->GetScreenInfo(results); -} - void WebContentsViewQt::FocusThroughTabTraversal(bool reverse) { content::WebContentsImpl *web_contents = static_cast<content::WebContentsImpl*>(m_webContents); diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h index 17058e05c..b19c29aa6 100644 --- a/src/core/web_contents_view_qt.h +++ b/src/core/web_contents_view_qt.h @@ -116,8 +116,6 @@ public: void TakeFocus(bool reverse) override; - void GetScreenInfo(content::ScreenInfo* results) const override; - void FocusThroughTabTraversal(bool reverse) override; diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index 473fd18e8..8feff40a2 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -386,9 +386,6 @@ WebEngineContext::WebEngineContext() // Enabled on OS X and Linux but currently not working. It worked in 5.7 on OS X. parsedCommandLine->AppendSwitch(switches::kDisableGpuMemoryBufferVideoFrames); - // The Mojo local-storage is currently pretty broken and saves in $$PWD/Local\ Storage - parsedCommandLine->AppendSwitch(switches::kDisableMojoLocalStorage); - #if defined(Q_OS_MACOS) // Accelerated decoding currently does not work on macOS due to issues with OpenGL Rectangle // texture support. See QTBUG-60002. diff --git a/src/process/main.cpp b/src/process/main.cpp index 3b4ce9837..ef653e109 100644 --- a/src/process/main.cpp +++ b/src/process/main.cpp @@ -49,41 +49,41 @@ struct tm; struct stat; struct stat64; -// exported in zygote_main_linux.cc -namespace content { +// exported in sandbox/linux/services/libc_interceptor.cc +namespace sandbox { struct tm* localtime_override(const time_t* timep); struct tm* localtime64_override(const time_t* timep); struct tm* localtime_r_override(const time_t* timep, struct tm* result); struct tm* localtime64_r_override(const time_t* timep, struct tm* result); } -// from zygote_main_linux.cc +// from sandbox/linux/services/libc_interceptor.cc __attribute__ ((__visibility__("default"))) struct tm* localtime_proxy(const time_t* timep) __asm__ ("localtime"); struct tm* localtime_proxy(const time_t* timep) { - return content::localtime_override(timep); + return sandbox::localtime_override(timep); } __attribute__ ((__visibility__("default"))) struct tm* localtime64_proxy(const time_t* timep) __asm__ ("localtime64"); struct tm* localtime64_proxy(const time_t* timep) { - return content::localtime64_override(timep); + return sandbox::localtime64_override(timep); } __attribute__ ((__visibility__("default"))) struct tm* localtime_r_proxy(const time_t* timep, struct tm* result) __asm__ ("localtime_r"); struct tm* localtime_r_proxy(const time_t* timep, struct tm* result) { - return content::localtime_r_override(timep, result); + return sandbox::localtime_r_override(timep, result); } __attribute__ ((__visibility__("default"))) struct tm* localtime64_r_proxy(const time_t* timep, struct tm* result) __asm__ ("localtime64_r"); struct tm* localtime64_r_proxy(const time_t* timep, struct tm* result) { - return content::localtime64_r_override(timep, result); + return sandbox::localtime64_r_override(timep, result); } #endif // defined(OS_LINUX) |