Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: athena/content/web_activity.cc

Issue 521013004: athena: Show a progress-bar when loading a web-page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « athena/content/DEPS ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/input/public/accelerator_manager.h" 9 #include "athena/input/public/accelerator_manager.h"
10 #include "base/bind.h"
10 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
11 #include "content/public/browser/native_web_keyboard_event.h" 12 #include "content/public/browser/native_web_keyboard_event.h"
12 #include "content/public/browser/navigation_controller.h" 13 #include "content/public/browser/navigation_controller.h"
13 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
14 #include "content/public/browser/web_contents_delegate.h" 15 #include "content/public/browser/web_contents_delegate.h"
15 #include "ui/aura/window.h" 16 #include "ui/aura/window.h"
17 #include "ui/compositor/closure_animation_observer.h"
18 #include "ui/compositor/scoped_layer_animation_settings.h"
16 #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" 19 #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h"
17 #include "ui/views/controls/webview/webview.h" 20 #include "ui/views/controls/webview/webview.h"
18 #include "ui/views/focus/focus_manager.h" 21 #include "ui/views/focus/focus_manager.h"
19 #include "ui/views/widget/widget.h" 22 #include "ui/views/widget/widget.h"
20 23
21 namespace athena { 24 namespace athena {
22 namespace { 25 namespace {
23 26
24 class WebActivityController : public AcceleratorHandler { 27 class WebActivityController : public AcceleratorHandler {
25 public: 28 public:
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 bool enter_fullscreen) OVERRIDE { 252 bool enter_fullscreen) OVERRIDE {
250 fullscreen_ = enter_fullscreen; 253 fullscreen_ = enter_fullscreen;
251 GetWidget()->SetFullscreen(fullscreen_); 254 GetWidget()->SetFullscreen(fullscreen_);
252 } 255 }
253 256
254 virtual bool IsFullscreenForTabOrPending( 257 virtual bool IsFullscreenForTabOrPending(
255 const content::WebContents* web_contents) const OVERRIDE { 258 const content::WebContents* web_contents) const OVERRIDE {
256 return fullscreen_; 259 return fullscreen_;
257 } 260 }
258 261
262 virtual void LoadingStateChanged(content::WebContents* source,
263 bool to_different_document) OVERRIDE {
264 bool has_stopped = source == NULL || !source->IsLoading();
265 LoadProgressChanged(source, has_stopped ? 1 : 0);
266 }
267
268 virtual void LoadProgressChanged(content::WebContents* source,
269 double progress) OVERRIDE {
270 if (!progress)
271 return;
272
273 if (!progress_bar_) {
274 CreateProgressBar();
275 source->GetNativeView()->layer()->Add(progress_bar_.get());
276 }
277 progress_bar_->SetBounds(gfx::Rect(
278 0, 0, progress * progress_bar_->parent()->bounds().width(), 3));
279 if (progress < 1)
280 return;
281
282 ui::ScopedLayerAnimationSettings settings(progress_bar_->GetAnimator());
283 settings.SetTweenType(gfx::Tween::EASE_IN);
284 ui::Layer* layer = progress_bar_.get();
285 settings.AddObserver(new ui::ClosureAnimationObserver(
286 base::Bind(&base::DeletePointer<ui::Layer>, progress_bar_.release())));
287 layer->SetOpacity(0.f);
288 }
289
259 private: 290 private:
291 void CreateProgressBar() {
292 CHECK(!progress_bar_);
293 progress_bar_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR));
294 progress_bar_->SetColor(SkColorSetRGB(0x00, 0xb0, 0xc7));
295 }
296
260 scoped_ptr<WebActivityController> controller_; 297 scoped_ptr<WebActivityController> controller_;
261 298
262 // If the activity got evicted, this is the web content which holds the known 299 // If the activity got evicted, this is the web content which holds the known
263 // state of the content before eviction. 300 // state of the content before eviction.
264 scoped_ptr<content::WebContents> evicted_web_contents_; 301 scoped_ptr<content::WebContents> evicted_web_contents_;
265 302
303 scoped_ptr<ui::Layer> progress_bar_;
304
266 // TODO(oshima): Find out if we should support window fullscreen. 305 // TODO(oshima): Find out if we should support window fullscreen.
267 // It may still useful when a user is in split mode. 306 // It may still useful when a user is in split mode.
268 bool fullscreen_; 307 bool fullscreen_;
269 308
270 DISALLOW_COPY_AND_ASSIGN(AthenaWebView); 309 DISALLOW_COPY_AND_ASSIGN(AthenaWebView);
271 }; 310 };
272 311
273 WebActivity::WebActivity(content::BrowserContext* browser_context, 312 WebActivity::WebActivity(content::BrowserContext* browser_context,
274 const GURL& url) 313 const GURL& url)
275 : browser_context_(browser_context), 314 : browser_context_(browser_context),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 void WebActivity::DidUpdateFaviconURL( 451 void WebActivity::DidUpdateFaviconURL(
413 const std::vector<content::FaviconURL>& candidates) { 452 const std::vector<content::FaviconURL>& candidates) {
414 ActivityManager::Get()->UpdateActivity(this); 453 ActivityManager::Get()->UpdateActivity(this);
415 } 454 }
416 455
417 void WebActivity::DidChangeThemeColor(SkColor theme_color) { 456 void WebActivity::DidChangeThemeColor(SkColor theme_color) {
418 title_color_ = theme_color; 457 title_color_ = theme_color;
419 } 458 }
420 459
421 } // namespace athena 460 } // namespace athena
OLDNEW
« no previous file with comments | « athena/content/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698