| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "athena/content/web_activity.h" | 5 #include "athena/content/web_activity.h" |
| 6 | 6 |
| 7 #include "athena/activity/public/activity_factory.h" | 7 #include "athena/activity/public/activity_factory.h" |
| 8 #include "athena/activity/public/activity_manager.h" | 8 #include "athena/activity/public/activity_manager.h" |
| 9 #include "athena/content/content_proxy.h" | 9 #include "athena/content/content_proxy.h" |
| 10 #include "athena/content/public/dialogs.h" | 10 #include "athena/content/public/dialogs.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 } | 94 } |
| 95 | 95 |
| 96 void HandleKeyboardEvent(content::WebContents* source, | 96 void HandleKeyboardEvent(content::WebContents* source, |
| 97 const content::NativeWebKeyboardEvent& event) { | 97 const content::NativeWebKeyboardEvent& event) { |
| 98 unhandled_keyboard_event_handler_.HandleKeyboardEvent( | 98 unhandled_keyboard_event_handler_.HandleKeyboardEvent( |
| 99 event, web_view_->GetFocusManager()); | 99 event, web_view_->GetFocusManager()); |
| 100 } | 100 } |
| 101 | 101 |
| 102 private: | 102 private: |
| 103 // AcceleratorHandler: | 103 // AcceleratorHandler: |
| 104 virtual bool IsCommandEnabled(int command_id) const OVERRIDE { | 104 virtual bool IsCommandEnabled(int command_id) const override { |
| 105 switch (command_id) { | 105 switch (command_id) { |
| 106 case CMD_RELOAD: | 106 case CMD_RELOAD: |
| 107 case CMD_RELOAD_IGNORE_CACHE: | 107 case CMD_RELOAD_IGNORE_CACHE: |
| 108 return true; | 108 return true; |
| 109 case CMD_BACK: | 109 case CMD_BACK: |
| 110 return web_view_->GetWebContents()->GetController().CanGoBack(); | 110 return web_view_->GetWebContents()->GetController().CanGoBack(); |
| 111 case CMD_FORWARD: | 111 case CMD_FORWARD: |
| 112 return web_view_->GetWebContents()->GetController().CanGoForward(); | 112 return web_view_->GetWebContents()->GetController().CanGoForward(); |
| 113 case CMD_CLOSE: | 113 case CMD_CLOSE: |
| 114 // TODO(oshima): check onbeforeunload handler. | 114 // TODO(oshima): check onbeforeunload handler. |
| 115 return true; | 115 return true; |
| 116 case CMD_STOP: | 116 case CMD_STOP: |
| 117 return web_view_->GetWebContents()->IsLoading(); | 117 return web_view_->GetWebContents()->IsLoading(); |
| 118 } | 118 } |
| 119 return false; | 119 return false; |
| 120 } | 120 } |
| 121 | 121 |
| 122 virtual bool OnAcceleratorFired(int command_id, | 122 virtual bool OnAcceleratorFired(int command_id, |
| 123 const ui::Accelerator& accelerator) OVERRIDE { | 123 const ui::Accelerator& accelerator) override { |
| 124 switch (command_id) { | 124 switch (command_id) { |
| 125 case CMD_RELOAD: | 125 case CMD_RELOAD: |
| 126 web_view_->GetWebContents()->GetController().Reload(false); | 126 web_view_->GetWebContents()->GetController().Reload(false); |
| 127 return true; | 127 return true; |
| 128 case CMD_RELOAD_IGNORE_CACHE: | 128 case CMD_RELOAD_IGNORE_CACHE: |
| 129 web_view_->GetWebContents()->GetController().ReloadIgnoringCache(false); | 129 web_view_->GetWebContents()->GetController().ReloadIgnoringCache(false); |
| 130 return true; | 130 return true; |
| 131 case CMD_BACK: | 131 case CMD_BACK: |
| 132 web_view_->GetWebContents()->GetController().GoBack(); | 132 web_view_->GetWebContents()->GetController().GoBack(); |
| 133 return true; | 133 return true; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 219 |
| 220 SwapWebContents(evicted_web_contents_.Pass()); | 220 SwapWebContents(evicted_web_contents_.Pass()); |
| 221 } | 221 } |
| 222 | 222 |
| 223 // Check if the content got evicted. | 223 // Check if the content got evicted. |
| 224 const bool IsContentEvicted() { return !!evicted_web_contents_.get(); } | 224 const bool IsContentEvicted() { return !!evicted_web_contents_.get(); } |
| 225 | 225 |
| 226 // content::WebContentsDelegate: | 226 // content::WebContentsDelegate: |
| 227 virtual content::WebContents* OpenURLFromTab( | 227 virtual content::WebContents* OpenURLFromTab( |
| 228 content::WebContents* source, | 228 content::WebContents* source, |
| 229 const content::OpenURLParams& params) OVERRIDE { | 229 const content::OpenURLParams& params) override { |
| 230 switch(params.disposition) { | 230 switch(params.disposition) { |
| 231 case CURRENT_TAB: { | 231 case CURRENT_TAB: { |
| 232 DCHECK(source == web_contents()); | 232 DCHECK(source == web_contents()); |
| 233 content::NavigationController::LoadURLParams load_url_params( | 233 content::NavigationController::LoadURLParams load_url_params( |
| 234 params.url); | 234 params.url); |
| 235 load_url_params.referrer = params.referrer; | 235 load_url_params.referrer = params.referrer; |
| 236 load_url_params.frame_tree_node_id = params.frame_tree_node_id; | 236 load_url_params.frame_tree_node_id = params.frame_tree_node_id; |
| 237 load_url_params.transition_type = params.transition; | 237 load_url_params.transition_type = params.transition; |
| 238 load_url_params.extra_headers = params.extra_headers; | 238 load_url_params.extra_headers = params.extra_headers; |
| 239 load_url_params.should_replace_current_entry = | 239 load_url_params.should_replace_current_entry = |
| (...skipping 13 matching lines...) Expand all Loading... |
| 253 Activity::Show(activity); | 253 Activity::Show(activity); |
| 254 break; | 254 break; |
| 255 } | 255 } |
| 256 default: | 256 default: |
| 257 break; | 257 break; |
| 258 } | 258 } |
| 259 // NULL is returned if the URL wasn't opened immediately. | 259 // NULL is returned if the URL wasn't opened immediately. |
| 260 return NULL; | 260 return NULL; |
| 261 } | 261 } |
| 262 | 262 |
| 263 virtual bool CanOverscrollContent() const OVERRIDE { | 263 virtual bool CanOverscrollContent() const override { |
| 264 const std::string value = CommandLine::ForCurrentProcess()-> | 264 const std::string value = CommandLine::ForCurrentProcess()-> |
| 265 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation); | 265 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation); |
| 266 return value != "0"; | 266 return value != "0"; |
| 267 } | 267 } |
| 268 | 268 |
| 269 virtual void OverscrollUpdate(int delta_y) OVERRIDE { | 269 virtual void OverscrollUpdate(int delta_y) override { |
| 270 overscroll_y_ = delta_y; | 270 overscroll_y_ = delta_y; |
| 271 if (overscroll_y_ > kDistanceShowReloadMessage) { | 271 if (overscroll_y_ > kDistanceShowReloadMessage) { |
| 272 if (!reload_message_) | 272 if (!reload_message_) |
| 273 CreateReloadMessage(); | 273 CreateReloadMessage(); |
| 274 reload_message_->Show(); | 274 reload_message_->Show(); |
| 275 float opacity = 1.0f; | 275 float opacity = 1.0f; |
| 276 if (overscroll_y_ < kDistanceReload) { | 276 if (overscroll_y_ < kDistanceReload) { |
| 277 opacity = | 277 opacity = |
| 278 (overscroll_y_ - kDistanceShowReloadMessage) / | 278 (overscroll_y_ - kDistanceShowReloadMessage) / |
| 279 static_cast<float>(kDistanceReload - kDistanceShowReloadMessage); | 279 static_cast<float>(kDistanceReload - kDistanceShowReloadMessage); |
| 280 } | 280 } |
| 281 reload_message_->GetLayer()->SetOpacity(opacity); | 281 reload_message_->GetLayer()->SetOpacity(opacity); |
| 282 } else if (reload_message_) { | 282 } else if (reload_message_) { |
| 283 reload_message_->Hide(); | 283 reload_message_->Hide(); |
| 284 } | 284 } |
| 285 } | 285 } |
| 286 | 286 |
| 287 virtual void OverscrollComplete() OVERRIDE { | 287 virtual void OverscrollComplete() override { |
| 288 if (overscroll_y_ >= kDistanceReload) | 288 if (overscroll_y_ >= kDistanceReload) |
| 289 GetWebContents()->GetController().Reload(false); | 289 GetWebContents()->GetController().Reload(false); |
| 290 if (reload_message_) | 290 if (reload_message_) |
| 291 reload_message_->Hide(); | 291 reload_message_->Hide(); |
| 292 overscroll_y_ = 0; | 292 overscroll_y_ = 0; |
| 293 } | 293 } |
| 294 | 294 |
| 295 virtual void AddNewContents(content::WebContents* source, | 295 virtual void AddNewContents(content::WebContents* source, |
| 296 content::WebContents* new_contents, | 296 content::WebContents* new_contents, |
| 297 WindowOpenDisposition disposition, | 297 WindowOpenDisposition disposition, |
| 298 const gfx::Rect& initial_pos, | 298 const gfx::Rect& initial_pos, |
| 299 bool user_gesture, | 299 bool user_gesture, |
| 300 bool* was_blocked) OVERRIDE { | 300 bool* was_blocked) override { |
| 301 // TODO(oshima): Use factory. | 301 // TODO(oshima): Use factory. |
| 302 ActivityManager::Get()->AddActivity( | 302 ActivityManager::Get()->AddActivity( |
| 303 new WebActivity(new AthenaWebView(new_contents))); | 303 new WebActivity(new AthenaWebView(new_contents))); |
| 304 } | 304 } |
| 305 | 305 |
| 306 virtual bool PreHandleKeyboardEvent( | 306 virtual bool PreHandleKeyboardEvent( |
| 307 content::WebContents* source, | 307 content::WebContents* source, |
| 308 const content::NativeWebKeyboardEvent& event, | 308 const content::NativeWebKeyboardEvent& event, |
| 309 bool* is_keyboard_shortcut) OVERRIDE { | 309 bool* is_keyboard_shortcut) override { |
| 310 return controller_->PreHandleKeyboardEvent( | 310 return controller_->PreHandleKeyboardEvent( |
| 311 source, event, is_keyboard_shortcut); | 311 source, event, is_keyboard_shortcut); |
| 312 } | 312 } |
| 313 | 313 |
| 314 virtual void HandleKeyboardEvent( | 314 virtual void HandleKeyboardEvent( |
| 315 content::WebContents* source, | 315 content::WebContents* source, |
| 316 const content::NativeWebKeyboardEvent& event) OVERRIDE { | 316 const content::NativeWebKeyboardEvent& event) override { |
| 317 controller_->HandleKeyboardEvent(source, event); | 317 controller_->HandleKeyboardEvent(source, event); |
| 318 } | 318 } |
| 319 | 319 |
| 320 virtual void ToggleFullscreenModeForTab(content::WebContents* web_contents, | 320 virtual void ToggleFullscreenModeForTab(content::WebContents* web_contents, |
| 321 bool enter_fullscreen) OVERRIDE { | 321 bool enter_fullscreen) override { |
| 322 fullscreen_ = enter_fullscreen; | 322 fullscreen_ = enter_fullscreen; |
| 323 GetWidget()->SetFullscreen(fullscreen_); | 323 GetWidget()->SetFullscreen(fullscreen_); |
| 324 } | 324 } |
| 325 | 325 |
| 326 virtual bool IsFullscreenForTabOrPending( | 326 virtual bool IsFullscreenForTabOrPending( |
| 327 const content::WebContents* web_contents) const OVERRIDE { | 327 const content::WebContents* web_contents) const override { |
| 328 return fullscreen_; | 328 return fullscreen_; |
| 329 } | 329 } |
| 330 | 330 |
| 331 virtual void LoadingStateChanged(content::WebContents* source, | 331 virtual void LoadingStateChanged(content::WebContents* source, |
| 332 bool to_different_document) OVERRIDE { | 332 bool to_different_document) override { |
| 333 bool has_stopped = source == NULL || !source->IsLoading(); | 333 bool has_stopped = source == NULL || !source->IsLoading(); |
| 334 LoadProgressChanged(source, has_stopped ? 1 : 0); | 334 LoadProgressChanged(source, has_stopped ? 1 : 0); |
| 335 } | 335 } |
| 336 | 336 |
| 337 virtual void LoadProgressChanged(content::WebContents* source, | 337 virtual void LoadProgressChanged(content::WebContents* source, |
| 338 double progress) OVERRIDE { | 338 double progress) override { |
| 339 if (!progress) | 339 if (!progress) |
| 340 return; | 340 return; |
| 341 | 341 |
| 342 if (!progress_bar_) { | 342 if (!progress_bar_) { |
| 343 CreateProgressBar(); | 343 CreateProgressBar(); |
| 344 source->GetNativeView()->layer()->Add(progress_bar_.get()); | 344 source->GetNativeView()->layer()->Add(progress_bar_.get()); |
| 345 } | 345 } |
| 346 progress_bar_->SetBounds(gfx::Rect( | 346 progress_bar_->SetBounds(gfx::Rect( |
| 347 0, 0, progress * progress_bar_->parent()->bounds().width(), 3)); | 347 0, 0, progress * progress_bar_->parent()->bounds().width(), 3)); |
| 348 if (progress < 1) | 348 if (progress < 1) |
| 349 return; | 349 return; |
| 350 | 350 |
| 351 ui::ScopedLayerAnimationSettings settings(progress_bar_->GetAnimator()); | 351 ui::ScopedLayerAnimationSettings settings(progress_bar_->GetAnimator()); |
| 352 settings.SetTweenType(gfx::Tween::EASE_IN); | 352 settings.SetTweenType(gfx::Tween::EASE_IN); |
| 353 ui::Layer* layer = progress_bar_.get(); | 353 ui::Layer* layer = progress_bar_.get(); |
| 354 settings.AddObserver(new ui::ClosureAnimationObserver( | 354 settings.AddObserver(new ui::ClosureAnimationObserver( |
| 355 base::Bind(&base::DeletePointer<ui::Layer>, progress_bar_.release()))); | 355 base::Bind(&base::DeletePointer<ui::Layer>, progress_bar_.release()))); |
| 356 layer->SetOpacity(0.f); | 356 layer->SetOpacity(0.f); |
| 357 } | 357 } |
| 358 | 358 |
| 359 virtual content::ColorChooser* OpenColorChooser( | 359 virtual content::ColorChooser* OpenColorChooser( |
| 360 content::WebContents* web_contents, | 360 content::WebContents* web_contents, |
| 361 SkColor color, | 361 SkColor color, |
| 362 const std::vector<content::ColorSuggestion>& suggestions) OVERRIDE { | 362 const std::vector<content::ColorSuggestion>& suggestions) override { |
| 363 return athena::OpenColorChooser(web_contents, color, suggestions); | 363 return athena::OpenColorChooser(web_contents, color, suggestions); |
| 364 } | 364 } |
| 365 | 365 |
| 366 // Called when a file selection is to be done. | 366 // Called when a file selection is to be done. |
| 367 virtual void RunFileChooser( | 367 virtual void RunFileChooser( |
| 368 content::WebContents* web_contents, | 368 content::WebContents* web_contents, |
| 369 const content::FileChooserParams& params) OVERRIDE { | 369 const content::FileChooserParams& params) override { |
| 370 return athena::OpenFileChooser(web_contents, params); | 370 return athena::OpenFileChooser(web_contents, params); |
| 371 } | 371 } |
| 372 | 372 |
| 373 private: | 373 private: |
| 374 void CreateProgressBar() { | 374 void CreateProgressBar() { |
| 375 CHECK(!progress_bar_); | 375 CHECK(!progress_bar_); |
| 376 progress_bar_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); | 376 progress_bar_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); |
| 377 progress_bar_->SetColor(SkColorSetRGB(0x17, 0x59, 0xcd)); | 377 progress_bar_->SetColor(SkColorSetRGB(0x17, 0x59, 0xcd)); |
| 378 } | 378 } |
| 379 | 379 |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 if (content_proxy_.get()) | 625 if (content_proxy_.get()) |
| 626 content_proxy_.reset(NULL); | 626 content_proxy_.reset(NULL); |
| 627 } | 627 } |
| 628 | 628 |
| 629 void WebActivity::ShowContentProxy() { | 629 void WebActivity::ShowContentProxy() { |
| 630 if (!content_proxy_.get()) | 630 if (!content_proxy_.get()) |
| 631 content_proxy_.reset(new ContentProxy(web_view_)); | 631 content_proxy_.reset(new ContentProxy(web_view_)); |
| 632 } | 632 } |
| 633 | 633 |
| 634 } // namespace athena | 634 } // namespace athena |
| OLD | NEW |